00-99jsq.lst
来自「RZ-51V20 实例程序」· LST 代码 · 共 117 行
LST
117 行
C51 COMPILER V8.18 00_99JSQ 01/06/2010 20:13:37 PAGE 1
C51 COMPILER V8.18, COMPILATION OF MODULE 00_99JSQ
OBJECT MODULE PLACED IN 00-99jsq.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 00-99jsq.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2
3 typedef unsigned char uchar;
4 typedef unsigned int uint;
5
6 uchar Count,Sec,shift,n;
7
8 uchar code LEDData[ ] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,
9 0x82,0xF8,0x80,0x90,0xff};
10 uchar data display[2];
11 /********************************************************
12
13 主函数
14
15 *********************************************************/
16 main()
17 {
18 1 P0 = 0xff; //端口初始化
19 1 P2 = 0xff;
20 1 Count = 0x00;
21 1 Sec = 0x00;
22 1 n = 0x00;
23 1 shift = 0xfe; //送位码初值
24 1
25 1 TMOD = 0x01;
26 1 TH0 = 0x4c; //50ms定时
27 1 TL0 = 0x00;
28 1 ET0 = 1;
29 1
30 1 T2CON = 0x00; //设置T2CON寄存器
31 1 TH2 = 0xf8; //2ms定时
32 1 TL2 = 0xcc;
33 1 ET2 = 1; //启用Timer2中断
34 1 EA = 1; //总中断允许
35 1 TR2 = 1; //启动定时器2
36 1 TR0 = 1; //启动定时器0
37 1
38 1 while(1) ;
39 1
40 1 }
41
42 /*********************************************************
43
44 Timer0中断函数 (负责定时)
45
46 **********************************************************/
47 void Timer0() interrupt 1
48 {
49 1 TH0 = 0x4c; //50ms定时
50 1 TL0 = 0x00;
51 1 ++Count; //中断计数单元加1
52 1 if(Count == 20) //50ms×20=1s
53 1 {
54 2 Count = 0; //清中断计数单元
55 2 ++Sec; //秒单元加1
C51 COMPILER V8.18 00_99JSQ 01/06/2010 20:13:37 PAGE 2
56 2 if(Sec == 100)
57 2 Sec = 0; //清秒单元
58 2 }
59 1 }
60
61 /*********************************************************
62
63 Timer2中断函数 (负责数码管显示)
64
65 **********************************************************/
66 void timer2() interrupt 5
67 {
68 1 TR2 = 0;
69 1 TF2 = 0; //手工清中断标志
70 1 TH2 = 0xf8; //2ms定时常数
71 1 TL2 = 0xcc;
72 1
73 1 if(n >= 2) //两位数码管显示
74 1 {
75 2 n = 0;
76 2 shift = 0x7f; //送位码初值
77 2 P2 = 0xff; //关闭显示
78 2 }
79 1 else
80 1 {
81 2 display[0] = Sec%10; //个位
82 2 display[1] = Sec/10; //十位
83 2
84 2 P0 = LEDData[display[n++]]; //送段码
85 2 P2 = shift; //送位码
86 2 shift = (shift>>1)|0x80; //调整位码
87 2 }
88 1 TR2 = 1;
89 1 }
90
91 /**********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 184 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?