?? inter.c
字號:
#include <stdio.h>
#include <absacc.h>
#include <./Atmel/at89x52.h>
#include "source.h"
void int0() interrupt 0 {}
void serial() interrupt 4{
if(RI){//接收中斷處理
dsr_buf[dsr_head]=SBUF;
dsr_head++;
dsr_head %=DSR_LEN;
RI=0;
}
else if(TI){//發送中斷處理
TI=0;
if(dst_tail!=dst_head){//表明串口發送緩沖區中有數據。
SBUF=dst_buf[dst_tail];//把串口發送緩沖區數據寫到串口發送緩沖中
dst_tail++;//把串口發送發送緩沖區的數據數量減一
dst_tail%=DST_LEN;
}
else{//表明發送緩沖區中無數據
TDBdata_over=1;//設置為1,表明目前無數據發送
}
}
}
void time2()interrupt 5 {//定時器2中斷,每10毫秒把開啟的軟定時器的計數值減一
TF2=0;
if(TT[MOVE_TIMER].enable==1){//此軟定時器使能,為單向定時器,既超時后關閉定時器
if(TT[MOVE_TIMER].count==0){
TT[MOVE_TIMER].enable=0;//關閉此軟定時器
timerout |=TIMOUT_MOVE_ARROW;//設置超時標志
}
else
TT[MOVE_TIMER].count--;//定時器的數值減一
}
if(TT[NOTICE_TIMER].enable==1){//為周期定時器,即固定時間周期的超時。
if(TT[NOTICE_TIMER].count==0){
TT[NOTICE_TIMER].count=NOTICE_TIME_LENGTH;
timerout |=TIMOUT_ADV_CHANGE;
}
else
TT[NOTICE_TIMER].count--;
}
if(TT[RTC_TIMER].enable==1){//為周期定時器
if(TT[RTC_TIMER].count==0){
TT[RTC_TIMER].count=RTC_TIME_LENGTH;
timerout |=TIMOUT_RTC;
}
else
TT[RTC_TIMER].count--;
}
if(TT[TMPERA_TIMER].enable==1){//為單向定時器
if(TT[TMPERA_TIMER].count==0){
TT[TMPERA_TIMER].enable=0;
timerout |=TIMOUT_TEMPERATURE;
}
else
TT[TMPERA_TIMER].count--;
}
if(TT[TEST_TIMER].enable==1){//為周期定時器
if(TT[TEST_TIMER].count==0){
TT[TEST_TIMER].count=test_timer_len;
timerout |=TIMOUT_TEST_TIMER;
}
else
TT[TEST_TIMER].count--;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -