?? timer.lst
字號(hào):
C51 COMPILER V7.06 TIMER 10/13/2006 09:21:10 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN timer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE timer.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <./Atmel/at89x52.h>
2 #include <stdio.h>
3 #include <absacc.h>
4 #include <intrins.h>
5 #include "source.h"
6 void start_t2imer(void)//初始化定時(shí)器2,每10毫秒中斷一次
7 {
8 1 T2CON=0X00;
9 1 RCAP2L=TIMER2L; //10ms
10 1 TL2=TIMER2L;
11 1 RCAP2H=TIMER2H;
12 1 TH2=TIMER2H;
13 1 ET2=1;//enable timer2 interrupt
14 1 TR2=1;//start timer
15 1 }
16 void stop_t2imer(void)//停止定時(shí)器2
17 {
18 1 ET2=0; //disable timer2 interrupt
19 1 TR2=0; //stop timer2 counter;
20 1 }
21 void reset_timer(unsigned char i)//停止軟定時(shí)器i
22 {
23 1 extern struct my_timer TT[TIMER_NUM];
24 1 TT[i].enable=0;
25 1 TT[i].count=0;
26 1 }
27 void set_timer(unsigned char i,unsigned int count) //設(shè)置軟定時(shí)器i的超時(shí)時(shí)間為count*10毫秒
28 {
29 1 TT[i].count=count;
30 1 TT[i].enable=1;
31 1 }
32 bit detect_timeout(void){//檢測(cè)定時(shí)器是否超時(shí)間
33 1 unsigned char temp;
34 1 bit ret;
35 1 ret=0;
36 1 if(timerout&TIMOUT_MOVE_ARROW){//箭頭移動(dòng)定時(shí)器超時(shí),箭頭可以移動(dòng)一個(gè)步進(jìn)
37 2 timerout &=~TIMOUT_MOVE_ARROW;
38 2 send_status_msg(MSG_STATUS_MOVE);
39 2 }
40 1 if(timerout&TIMOUT_ADV_CHANGE){//信息轉(zhuǎn)換定時(shí)器超時(shí),發(fā)送一個(gè)信息轉(zhuǎn)換消息
41 2 timerout &=~TIMOUT_ADV_CHANGE;
42 2 send_hbs_msg(MSG_HBS_INFO_CHANGE);
43 2 }
44 1 if(timerout&TIMOUT_RTC){//1秒的實(shí)時(shí)時(shí)鐘換定時(shí)器超時(shí)
45 2 timerout &=~TIMOUT_RTC;
46 2 rtc_update();//更新讀出的RTC時(shí)間
47 2 show_time();//在屏幕上顯示時(shí)間。
48 2 }
49 1 if(timerout&TIMOUT_TEMPERATURE){//溫度轉(zhuǎn)化定時(shí)器超時(shí)
50 2 timerout &=~TIMOUT_TEMPERATURE;
51 2 switch(others.tem_fsm){
52 3 case 0x00://等待300毫秒后開始溫度轉(zhuǎn)化
53 3 others.tem_fsm=0X01;
54 3 set_timer(TMPERA_TIMER,30);//power on 300 ms.
55 3 break;
C51 COMPILER V7.06 TIMER 10/13/2006 09:21:10 PAGE 2
56 3 case 0x01://開始溫度轉(zhuǎn)換
57 3 others.tem_fsm=0X02;
58 3 tmstart();//溫度轉(zhuǎn)換開始
59 3 set_timer(TMPERA_TIMER,150);//必須到1.5秒后才能讀到溫度值
60 3 break;
61 3 case 0x02://溫度傳感器溫度轉(zhuǎn)換完畢,可以讀取溫度值了。
62 3 others.tem_fsm=0X00;
63 3 temp=tmrtemp_all();//temp為返回的溫度值,其值為最高位為‘1’表明位負(fù)的溫度,為‘0’表明為正的溫度,其
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -