📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 04/17/2012 17:00:10 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //main.c
2 #include <reg51.h> //包含头文件
3 #include "fun.h"
4
5 void INT0_interrupt() interrupt 0
6 {
7 1 TR0=0;//关定时器
8 1 ET0 = 0;//关定时器中断
9 1 IAP_erase (0x20, 0x00); //擦除扇区
10 1 IAP_write (0x20, 0, count_in_T0);//写计数值
11 1 IAP_write (0x20, 1, display_num);//写显示值
12 1 }
13
14 void Timer0_interrupt() interrupt 1
15 {
16 1 TH0 = T0_50ms >> 8; //重装初值
17 1 TL0 = T0_50ms;
18 1
19 1 if ((++ count_in_T0) == 20)//count_in_T0自加到20,计时1s
20 1 {
21 2 count_in_T0 = 0;
22 2 if ( (++ display_num) ==60)
23 2 {//display_num自加1后判断是否等于60
24 3 display_num = 0;
25 3 }
26 2 }
27 1 }
28
29 main()
30 {
31 1 unsigned char shi, ge; //定义十位、个位要输出的数据
32 1
33 1 ms_delay(100);
34 1 init_port();
35 1 init_timer();
36 1
37 1 //读上次断电时的参数
38 1 count_in_T0 = IAP_read (0x20, 0);
39 1 display_num = IAP_read (0x20, 0);
40 1
41 1 //如果读出来的参数异常,数据清零
42 1 //EEPROM存储区的初始值是0xff,也在异常数据范围内
43 1 if (count_in_T0 >20 || display_num > 60)
44 1 {
45 2 count_in_T0 = 0;
46 2 display_num = 0;
47 2 }
48 1
49 1 //把两个数码管都关闭
50 1 en2 = 1;
51 1 en1 = 1;
52 1
53 1 IT0 = 1;//设置INT0为下降沿触发
54 1 EX0 = 1;//允许INT0中断
55 1 EA = 1;//开总中断
C51 COMPILER V8.08 MAIN 04/17/2012 17:00:10 PAGE 2
56 1
57 1 while(1)
58 1 {
59 2 shi = display_num / 10;
60 2 ge = display_num % 10;
61 2 display(shi,ge);
62 2 }
63 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 318 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 ----
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 + -