📄 timer.lst
字号:
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)//初始化定时器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)//停止定时器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)//停止软定时器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) //设置软定时器i的超时时间为count*10毫秒
28 {
29 1 TT[i].count=count;
30 1 TT[i].enable=1;
31 1 }
32 bit detect_timeout(void){//检测定时器是否超时间
33 1 unsigned char temp;
34 1 bit ret;
35 1 ret=0;
36 1 if(timerout&TIMOUT_MOVE_ARROW){//箭头移动定时器超时,箭头可以移动一个步进
37 2 timerout &=~TIMOUT_MOVE_ARROW;
38 2 send_status_msg(MSG_STATUS_MOVE);
39 2 }
40 1 if(timerout&TIMOUT_ADV_CHANGE){//信息转换定时器超时,发送一个信息转换消息
41 2 timerout &=~TIMOUT_ADV_CHANGE;
42 2 send_hbs_msg(MSG_HBS_INFO_CHANGE);
43 2 }
44 1 if(timerout&TIMOUT_RTC){//1秒的实时时钟换定时器超时
45 2 timerout &=~TIMOUT_RTC;
46 2 rtc_update();//更新读出的RTC时间
47 2 show_time();//在屏幕上显示时间。
48 2 }
49 1 if(timerout&TIMOUT_TEMPERATURE){//温度转化定时器超时
50 2 timerout &=~TIMOUT_TEMPERATURE;
51 2 switch(others.tem_fsm){
52 3 case 0x00://等待300毫秒后开始温度转化
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://开始温度转换
57 3 others.tem_fsm=0X02;
58 3 tmstart();//温度转换开始
59 3 set_timer(TMPERA_TIMER,150);//必须到1.5秒后才能读到温度值
60 3 break;
61 3 case 0x02://温度传感器温度转换完毕,可以读取温度值了。
62 3 others.tem_fsm=0X00;
63 3 temp=tmrtemp_all();//temp为返回的温度值,其值为最高位为‘1’表明位负的温度,为‘0’表明为正的温度,其
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -