PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   Giải thích giúp mình đoạn code quét phím này với (http://www.picvietnam.com/forum/showthread.php?t=30271)

loveboom3012 27-08-2012 11:02 PM

Giải thích giúp mình đoạn code quét phím này với
 
Code:

void keyscan()
{
RD0=1;RD1=1;RD2=1;RD3=1;
if(SW1 != 1) { key=0;SW1=1;delay_ms(150);}
if(SW2 != 1) { key=1;SW2=1;delay_ms(150);}
if(SW3 != 1) { key=2;SW3=1;delay_ms(150);}
if(SW4 != 1) { key=3;SW4=1;delay_ms(150);}
if(key != 5)
{
switch (key)
{ case 0: {mode++;key = 5;blink=1;set_blink();}
break;
case 1: {change_time();key = 5;update_1307();}
break;
case 2: {clear_status();key = 5;}
break;
}
}
}


qloi 30-08-2012 09:58 PM

Trích:

Nguyên văn bởi loveboom3012 (Post 77363)
Code:

void keyscan()
{
RD0=1;RD1=1;RD2=1;RD3=1;
if(SW1 != 1) { key=0;SW1=1;delay_ms(150);}
if(SW2 != 1) { key=1;SW2=1;delay_ms(150);}
if(SW3 != 1) { key=2;SW3=1;delay_ms(150);}
if(SW4 != 1) { key=3;SW4=1;delay_ms(150);}
if(key != 5)
{
switch (key)
{ case 0: {mode++;key = 5;blink=1;set_blink();}
break;
case 1: {change_time();key = 5;update_1307();}
break;
case 2: {clear_status();key = 5;}
break;
}
}
}



Nhớ không nhầm thì đây là đoạn code scan nút trong RTC phải không bác.Các sw1,sw2,... là các biến nằm đâu đó phía trên,khi thực hiện tới hàm keyscan() thì nó sẻ kiểm tra các biến sw1,2... xem có khác 1 k.giả sử sw1 khác 1 thì nó sẽ cho key=0;sw1=1(trả về trạng thái ban đầu để cập nhật lần sau,... sau đó quét tiếp tới các lệnh if() đằng sau,nếu thỏa thì làm giống như trên. tiếp đến kiểm tra nếu key khác 5 thì cho làm các lệnh bên trong .Giả sử lúc nảy sw1 thỏa đk(sw1 khác 1) thì biến key bay giờ = 0 , từ đó cũng thỏa đk if(key !=5) nên nhảy vào trong và gặp hàm switch ,bây giờ ứng với giá trị key =0 thì cấu trúc switch sẽ trỏ tới case 0 để thực hiện các lện trong đó. chi tiết quá fk bác.


Múi giờ GMT. Hiện tại là 03:05 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam