16-05-2011, 17:35
|
|
|
חבר מתאריך: 07.10.06
הודעות: 1,795
|
|
אתה צריך זמן מדוייק?
אם כן, אתה יכול להשתמש timer.
האוגרים של הטימר הם TMOD ו-TCON, וערכו נמצא באוגרים TH0 ו-TL0. (תוכל לקרוא עליהם בדפי הנתונים...)
דוגמא לקוד קצר: (שמתאים למעבד at89c5131 בקצב שעון של 20MHz)
איפוס סטימר והפסיקה:
קוד:
void InitT0(){
TMOD = 0x01;
TCON = 0x10;
EA=1;
ET0=1;
TH0=0xFC;
TL0=0x18;
}
וזו הפסיקה עצמה:
קוד:
void F_500_hz() interrupt 1 using 1 {
ET0=0;
TH0=0xFC;
TL0=0x18;
ET0=1;
.................................
}
הפסיקה תקרה בתדירות של 500Hz. פשוט שים מונה, ותספור את הזמן...
|