+ Trả Lời Ðề Tài
Trang 2/2 đầuđầu 1 2
kết quả từ 11 tới 15 trên 15

Đề tài: Đếm số lần nút nhấn hiện thị lên LED 7seg

  1. #11
    Thành viên mới
    Tham gia
    Tue Feb 2009
    Bài
    10
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    cái này ko tính là lỗi được, theo mình chuyện t tăng ko hạn chế ở đây ko ảnh hưởng tới chương trình, ngược lại nếu thêm 1 câu lệnh xử lý giá trị t thì sẽ là lãng phí ! còn chuyện n tăng khi buông nút thì mình ko bình luận, vì theo mình nó chỉ là sự chọn lựa chủ quan của tác giả thôi !
    Tiện đây mình cũng có 1 đoạn code xử lý vụ nút ấn này, post lên mọi người cùng xem :
    #define BUTTON_CYCLE 400
    if(input(BUTTON1) == 0) // change lowtemp_set
    {
    count_button1 ++;
    }else
    {
    if(count_button1 >= 100)
    {
    goto BUTTON_1;
    }
    count_button1 = 0;
    }
    if(count_button1 >= BUTTON_CYCLE)
    {
    BUTTON_1:
    count_button1 = 0;
    so_lan_an_nut ++;
    }

    ở đoạn code này, mình kết hợp bắt đầu vào BUTTON1, ấn từng phát 1 hoặc giữ tay đều làm cho biến so_lan_an_nut tăng lên
    Anh yêu em như ri

  2. #12
    Moderator
    Tham gia
    Sat Jan 2009
    Bài
    1,260
    Thanks
    105
    Thanked 275 Times in 217 Posts

    Exclamation

    Xử lý tràn biến là thao tác luôn phải nghĩ đến khi thực hiện phép tăng (++).
    Mặc dù trong từng trường hợp đặc biệt, việc không xử lý giới hạn tăng có thể không gây ra lỗi, tuy nhiên, đây là nguyên tắc của lập trình: Hãy làm cho mọi thứ tường minh.

    Việc sắp xếp hợp lý code cũng có thể tiết kiệm CPU tương đương với code ẩn. Nhưng cái lợi là code sẽ tường minh, thuận lợi cho kiểm tra và sửa chữa lỗi.

  3. #13
    Hạ vị Thần cấp
    Tham gia
    Mon Feb 2009
    Bạn đang xài vB
    Mỹ Đình
    Bài
    137
    Thanks
    21
    Thanked 15 Times in 12 Posts

    Default Bắt sườn xung

    unsigned int treP1_0=0;
    bit newP1_0=1, oldP1_0=1;
    unsigned char dongcongtac(void)
    {
    newP1_0=P1_0;
    if( newP1_0^oldP1_0 )
    treP1_0++;
    if( treP1_0>100)
    {
    if(oldP1_0)
    {
    if(++n>9);
    n=0;
    treP1_0=0;
    }
    oldP1_0 = newP1_0;
    }
    return n;
    }
    Đỗ Đức Hiệp
    Trang bị điện K44
    SĐT: 0902285814

  4. #14
    Thất tinh ác ma DLinh2210's Avatar
    Tham gia
    Mon Feb 2009
    Bài
    256
    Thanks
    21
    Thanked 22 Times in 20 Posts

    Default

    Trích lilean View Post
    cái này ko tính là lỗi được, theo mình chuyện t tăng ko hạn chế ở đây ko ảnh hưởng tới chương trình, ngược lại nếu thêm 1 câu lệnh xử lý giá trị t thì sẽ là lãng phí ! còn chuyện n tăng khi buông nút thì mình ko bình luận, vì theo mình nó chỉ là sự chọn lựa chủ quan của tác giả thôi !
    Tiện đây mình cũng có 1 đoạn code xử lý vụ nút ấn này, post lên mọi người cùng xem :
    #define BUTTON_CYCLE 400
    if(input(BUTTON1) == 0) // change lowtemp_set
    {
    count_button1 ++;
    }else
    {
    if(count_button1 >= 100)
    {
    goto BUTTON_1;
    }
    count_button1 = 0;
    }
    if(count_button1 >= BUTTON_CYCLE)
    {
    BUTTON_1:
    count_button1 = 0;
    so_lan_an_nut ++;
    }

    ở đoạn code này, mình kết hợp bắt đầu vào BUTTON1, ấn từng phát 1 hoặc giữ tay đều làm cho biến so_lan_an_nut tăng lên
    đúng là sẽ xảy ra tràn dữ liệu, nhưng đoạn code này theo tui nghĩ là hơi thừa.
    bài này là bắt thời điểm nhả nút rùi, vậy khi nào thì nó sẽ thực hiện lệnh so sánh với BUTTON_CYCLE ?? tui nghĩ là câu lệnh này sẽ không được thực hiện vì khi nhấn nút thì nó đã đếm tăng count_button1 rồi và sau đó là nhả nút thì nó sẽ nhảy vào else sau --> nếu điều kiện trong else mà ko thỏa mãn thì chắc chắn là điều kiện với BUTTON_CYCLE cũng sẽ ko được thỏa mãn.
    vì vậy tui nghĩ không cần phải viết thêm lệnh đó, ta có thể đặt luôn lệnh đếm n vào chỗ goto.
    TBĐ-K42
    Hãy giữ cái đầu lạnh để giải quyết những việc nóng!

  5. #15
    Thành viên mới
    Tham gia
    Tue Feb 2009
    Bài
    10
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    đoạn code trên mục đích là thực hiện: so_lan_an_nut++
    ý của tớ là khi ấn nút rồi nhả tay ra thì sẽ làm tăng được biến ( bắt sườn lên), mà nếu ấn mà ko nhả tay ra cứ giữ đấy thì biến cũng sẽ từ từ tăng lên sau mỗi 1 khoảng BUTTON_CYCLE thời gian. DLinh2210 xem lại nhé !
    Anh yêu em như ri

+ Trả Lời Ðề Tài
Trang 2/2 đầuđầu 1 2

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Quyền Sử Dụng Ở Diễn Ðàn

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts