📄 pc51.lst
字号:
C51 COMPILER V7.00 PC51 04/08/2006 16:21:11 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE PC51
OBJECT MODULE PLACED IN pc51.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pc51.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "reg52.h"
2
3 #define TimeLen 2000 // 定时器定时时间长度
4
5 unsigned short Loop_Num ; // 转动圈数
6 unsigned char Led_Buf[4] ={1,2,3,4}; // 存放数码管显示的数
7 unsigned char Led_Sel = 0 ; // 动态扫描中选中的数码管号
8
9 #define LEDDAT_P P0 // 数码管数据管脚
10 #define LEDSEL_P P2 // 数码管使能选择管脚
11
12 #define LED_NUM 4 // 数码管个数
13 #define uint8 unsigned char
14 #define uint32 unsigned int
15 #define Baud 9600
16 #define fosc 11059200
17
18 bit Tx_Flag ; // 发送结束标志位 ,0:发送结束 1:正在发送
19 bit Rx_Flag ; // 接收结束标志位 ,0:正在接收 1:接收完一条完整的指令
20 bit Rx_Start ; // 接收到开始符
21
22
23
24 uint8 RxLen=0 ;
25
26
27
28 // 数码管数
29 code uint8 LED_CODE[21]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
30 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xbf};
31 void InitCom( void );
32 // 定时器0初始
33 void Time0Init(void)
34 {
35 1 TMOD= 0x01 ;
36 1 TR0= 1 ;
37 1 ET0= 1 ;
38 1 EA= 1 ;
39 1 TL0= ( 65536-TimeLen ) % 256 ;
40 1 TH0= ( 65536-TimeLen ) / 256 ;
41 1 }
42 // 串口模块
43
44
45 //
46 // 协议 : 起始码 ($ ) + 长度码 (该字节后面的总长度)+ 数据 + 结束符(#)
47 //
48
49
50
51
52 void InitCom( void )
53 {
54 1
55 1 uint32 temp ;
C51 COMPILER V7.00 PC51 04/08/2006 16:21:11 PAGE 2
56 1
57 1 SCON = 0x50 ; // 串口模式1,10位模式
58 1 // T2 初始化
59 1 T2CON = 0X34 ;
60 1 PCON = 0 ;
61 1 temp = fosc;
62 1 temp = temp / 32 / Baud ; // 获取波特率相应的计数值
63 1 temp = 0xffff - temp ;
64 1 RCAP2H = temp>>8 ;
65 1 RCAP2L = temp&0xff ;
66 1
67 1 ES = 1 ; // 启用串口中断
68 1 Tx_Flag = 0 ;
69 1 Rx_Start = 0 ;
70 1 Rx_Flag = 0 ;
71 1 }
72
73 //extern unsigned char Led_Buf[4] ;
74 uint8 bak_buf[4] ;
75 // 串口
76 void Com_Int( void ) interrupt 4
77 {
78 1 uint8 temp ;
79 1
80 1 if(RI)
81 1 {
82 2 RI = 0 ;
83 2 P1 = SBUF ;
84 2 /* if( temp == '$')
85 2 {
86 2 Rx_Start = 1 ;
87 2 RxLen = 0 ; // 数据接收数组下标归零
88 2 }
89 2 else if( Rx_Start == 1 )*/
90 2 //{
91 2 // bak_buf[ RxLen ] = temp ;
92 2 //RxLen++ ;
93 2 /*if( RxLen == 4 )
94 2 {
95 2 RxLen = 0 ;
96 2 Rx_Start = 0 ;
97 2 for( temp = 0 ; temp<4 ; temp++ ) Led_Buf[temp] = bak_buf[4] ;
98 2 }
99 2 }*/
100 2
101 2 }
102 1 /*if(TI)
103 1 {
104 1 TI = 0 ;
105 1 Tx_Flag = 0 ;
106 1 }*/
107 1 }
*** WARNING C280 IN LINE 78 OF PC51.C: 'temp': unreferenced local variable
108
109
110
111 // 每20毫秒调用 动态扫描
112 void timer0(void) interrupt 1
113 {
114 1
115 1 TL0= ( 65536-TimeLen ) % 256 ;
116 1 TH0= ( 65536-TimeLen ) / 256 ;
C51 COMPILER V7.00 PC51 04/08/2006 16:21:11 PAGE 3
117 1
118 1 LEDSEL_P = 0;
119 1 LEDDAT_P = ~LED_CODE[Led_Buf[Led_Sel]] ; // 动态扫描显示
120 1 LEDSEL_P = 0x01 << Led_Sel ;
121 1 Led_Sel++;
122 1 if( Led_Sel == LED_NUM )Led_Sel=0;
123 1
124 1
125 1 }
126 main()
127 {
128 1 Time0Init() ;
129 1 InitCom() ;
130 1 while(1);
131 1 }
132
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 167 ----
CONSTANT SIZE = 21 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 1
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -