📄 timer0.lst
字号:
C51 COMPILER V8.08 TIMER0 05/25/2008 20:21:41 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE TIMER0
OBJECT MODULE PLACED IN timer0.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE timer0.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<STC12C5410AD.h>
2 #include<buzzer.h>
3 #include<uart.h>
4 #define RELOAD_H ( 65536-3000)/256;
5 #define RELOAD_L ( 65536-3000 )%256;
6 /*----------------------------------------------------------------------------------
7 extern variables
8 -----------------------------------------------------------------------------------*/
9 extern unsigned char refresh_flag;
10 extern unsigned char keyscan_flag;
11 extern unsigned char keyscan_tubefresh_counter;
12 extern unsigned char ad_counter;
13 extern unsigned char adc_flag;
14 extern unsigned char uart_counter,send_flag;
15 extern unsigned char buzzer_timer;
16 extern unsigned char buzzer_timer_trigger;
17 /*-----------------------------------------------------------------------------------
18 功能:定时器0初始化(晶振18.4M,计数周期为0.66us)
19 名称:Timer0_Init()
20 输入:无
21 输出:无
22 返回:无
23 -------------------------------------------------------------------------------------*/
24 void Timer0_Init(void)
25 {
26 1 //工作方式控制寄存器TMOD
27 1 //--------------------------------------------------------------------------------------
28 1 //TMOD寄存器用于定义定时/计数器的操作方式及工作模式,其格式如下:
29 1 // 7 6 5 4 3 2 1 0
30 1 // GATE C/T M1 M0 GATE C/T M1 M0
31 1 //--------------------------------------------------------------------------------------
32 1 //其中低4位(0~3)位定义定时/计数器0,高4位(4~7)定义定时/计数器1
33 1 //--------------------------------------------------------------------------------------
34 1 // M1 M0 为操作方式选择位
35 1 // 0 0 方式0 13位计数器
36 1 // 0 1 方式1 16位计数器
37 1 // 1 0 方式2 自动再装入的8位计数器
38 1 // 1 1 方式3 将定时/计数器0分成两个8位计数器.
39 1 //--------------------------------------------------------------------------------------
40 1 //C/T:选择定时器或计数模式. C/T=1时为计数模式 当C/T=0时为定时模式
41 1 //--------------------------------------------------------------------------------------
42 1 // GATE:选通控制.当GATE=1时,只有当 INTx端口为高电平且TRx置位为1时才选通定时器/计数器x;
43 1 // 当GATE=0时,只需TRx置位为1即选通定时/计数器x.
44 1
45 1 TMOD |= 0x01; //定时器0,方式1
46 1 TL0 = 22; //TL0定时器0低8位计数器
47 1 TH0 = 22; //TH0定时器0高8位计数器
48 1 TR0 = 1; //定时器/计数器0启动位.TR0=1:开始计时或计数 TR0=1禁止计时或计数
49 1 ET0 = 1; //定时器/计数器0中断使能
50 1 EA = 1; //全局中断使能
51 1 }
52
53 /*-----------------------------------------------------------------------------------
54 功能:定时器0中断服务程序
55 名称:Timer0_ISR(void) interrupt 1
C51 COMPILER V8.08 TIMER0 05/25/2008 20:21:41 PAGE 2
56 输入:无
57 输出:无
58 返回:无
59 备注:10ms中断一次
60 -------------------------------------------------------------------------------------*/
61 void Timer0_ISR(void) interrupt 1
62 {
63 1
64 1 //---digit tube about--------------------------------------------------------------
65 1 refresh_flag = 1;
66 1
67 1 //----keyboard about----------------------------------------------------------------
68 1 keyscan_tubefresh_counter++;
69 1 if( keyscan_tubefresh_counter >= 5 )
70 1 {
71 2 refresh_flag = 0;
72 2 keyscan_tubefresh_counter = 0;
73 2 keyscan_flag = 1;
74 2 }
75 1 //----ad about----------------------------------------------------------------------
76 1 ad_counter++;
77 1 if(ad_counter >= 250)
78 1 {
79 2 ad_counter = 0;
80 2 adc_flag = 1 ;
81 2 }
82 1 //--------uart about----------------------------------------------------------------
83 1 uart_counter++;
84 1 if(uart_counter >= 250)
85 1 {
86 2 uart_counter = 0;
87 2 send_flag =1;
88 2 }
89 1 //------------buzzer about-----------------------------------------------------------
90 1 if(buzzer_timer_trigger)
91 1 {
92 2 buzzer_timer++;
93 2 if(buzzer_timer >= 254)
94 2 {
95 3 buzzer_timer = 0;
96 3 buzzer_timer_trigger = 0;
97 3 close_buzzer();
98 3 }
99 2 }
100 1
101 1 //定时器0初值重装
102 1 TL0 = RELOAD_L;
103 1 TH0 = RELOAD_H;
104 1
105 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 151 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -