📄 smg_on.lst
字号:
C51 COMPILER V7.06 SMG_ON 11/06/2008 01:10:20 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SMG_ON
OBJECT MODULE PLACED IN smg_on.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE c51\smg_on.c INCDIR(.\Target\INC\) DEBUG OBJECTEXTEND PRINT(.\smg_on.lst) O
-BJECT(smg_on.obj)
stmt level source
1
2
3
4 #include "AT89X52.h"
5 #include "ES51_II.h"
6 #include "ES51_II_LIB.h"
7
8 // 不带小数点 0 1 2 3 4 5 6 7 8 9 a b c d e f
9 unsigned char code SMG_TABLE[16] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0
-x86,0x8e};
10
11 // 带小数点 0 1 2 3 4 5 6 7 8 9 a b c d e f
12 unsigned char code SMG_TABLE_DP[16] ={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x2
-1,0x06,0x0e};
13
14 // 数码管显示缓冲区;
15 unsigned char SMG_BUFF[4];
16
17 // 开启数码管显示;
18 // 用定时器定时刷新实现数码管的动态显示,所以必须使总中断允许(EA = 1);
19 // 此函数中并没有使EA=1,需在其他地方加上此条语句,否则数码管不会显示;
20 void SMGDisplayON(void)
21 {
22 1 TMOD &= 0x0f; // 保持T0状态不变
23 1 TMOD |= 0x10; // 定时器1方式1
24 1 TH1 = 0xEC; // 定时初值
25 1 TL1 = 0x78; // 一次定时5ms
26 1 ET1 = 1; // 开定时器1溢出中断
27 1 //EA = 1; // 开总中断
28 1 TR1 = 1; // 启动定时器1
29 1 }
30
31 // 定时器1刷新数码管显示;5ms秒刷新一次;一秒钟,每个数码管被刷新50次;
32 // 假定时钟为12MHZ
33 void T1RefurbishSMG(void) interrupt 3 //using 1
34 {
35 1 // 进入溢出中断时,变量值代表当前应刷新那个数码管
36 1 //static unsigned char SMGENNUB = 0;
37 1 static unsigned char SMG_Nub = 0;
38 1
39 1 TH1=0xEC; // 重装定时初值
40 1 TL1=0x78;
41 1
42 1 SMGEN |= 0xf0; // 数码管片选全部禁止
43 1 SEGPORT = SMG_BUFF[SMG_Nub]; // 放置数据
44 1 SMGEN &= ~( bmSMGEN1 << SMG_Nub ); // 选择一个数码管
45 1 if( ++SMG_Nub > 3)
46 1 SMG_Nub = 0;
47 1 }
48
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 82 ----
C51 COMPILER V7.06 SMG_ON 11/06/2008 01:10:20 PAGE 2
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
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 + -