📄 tetr.lst
字号:
C51 COMPILER V7.06 TETR 06/04/2008 10:36:57 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TETR
OBJECT MODULE PLACED IN tetr.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tetr.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <c8051F320.h> //c8051F320SFR的C51格式头文件
2 #define uchar unsigned char
3 #define uint unsigned int
4
5 #define SYSCLK 24000000
6 #define uart_rate 19200
7
8 void Port_Init(void);
9 void Timer1_Init(void);
10 void Uart0_Init(void);
11 void transmitte (void);
12
13 void start(void);
14 void receive(void);
15
16 uchar code trdata1[]={"correct\r\n\0"};
17 uchar code trdata2[]={"wrong\r\n\0"};
18 uchar code *data point;
19 bit trans_next_ok;
20
21 uint flag;
22 uchar data rc[3];
23 bit rc_next_ok;
24 uint data m;
25
26 sbit BEEP = P3^0;
27 sbit LED_SEL = P1^7;
28
29 extern uchar data hour,minute,second;
30
31 void Port_Init(void)
32 {
33 1 XBR0 = 0x01; //uart的tx,rx分配至p0.4及p0.5
34 1 P0MDOUT |= 0x10; //uart的tx为推挽输出
35 1 XBR1 = 0x40; //使能交叉矩阵,弱上拉
36 1 //关闭音响和LED,对应新实验板,与仿真无关
37 1 BEEP = 0;
38 1 P2 = 0;
39 1 LED_SEL = 0;
40 1 LED_SEL = 1;
41 1 LED_SEL = 0;
42 1 LED_SEL = 1;
43 1 //
44 1 }
45
46 void Timer1_Init(void)
47 {
48 1 CKCON |= 0x02; //定时器1和2的触发时钟为 sysclk/48 = 0.5MHZ
49 1 CKCON &= ~0x08;
50 1 TMOD |= 0x20; //定时器1为模式2,8位自动重装
51 1 TMOD &= ~0x10;
52 1 TH1 = -((SYSCLK/48)/2)/uart_rate;//设置定时器1的重装值,-13,即0xf3
53 1 TR1 = 1; //启动定时器1
54 1 }
55
C51 COMPILER V7.06 TETR 06/04/2008 10:36:57 PAGE 2
56 void Uart0_Init(void)
57 {
58 1 SCON0 |= 0x10; //8位数据,允许接收
59 1 //偶校验由软件实现
60 1 ES0 = 1; //允许UART中断
61 1 }
62
63 void Uart0_ISR(void) interrupt 4
64 {
65 1 if (RI0 == 1)
66 1 {
67 2 RI0 = 0;
68 2 rc[m] = SBUF0;
69 2 m++;
70 2 if(m==3)
71 2 {
72 3 rc_next_ok = 1;
73 3 m = 0;
74 3 }
75 2
76 2 }
77 1 if (TI0 == 1)
78 1 {
79 2 TI0 = 0;
80 2 trans_next_ok = 1;
81 2 }
82 1 }
83
84 void start(void)
85 {
86 1 if(flag==1) point=trdata1;
87 1 else point=trdata2;
88 1 flag = 0;
89 1 trans_next_ok =1;
90 1 }
91
92 void receive(void)
93 {
94 1 rc_next_ok = 0;
95 1 if(((rc[0]>>4)*10+(rc[0]&0x0f)<=23)&&((rc[1]>>4)*10+(rc[1]&0x0f)<=59)&&((rc[2]>>4)*10+(rc[2]&0x0f)<=59))
96 1 {
97 2 flag = 1;
98 2 EA = 0;
*** ERROR C202 IN LINE 98 OF TETR.C: 'EA': undefined identifier
99 2 hour = rc[0];
100 2 minute = rc [1];
101 2 second = rc[2];
102 2 EA = 1;
*** ERROR C202 IN LINE 102 OF TETR.C: 'EA': undefined identifier
103 2 }
104 1 else flag = 2;
105 1 }
106
107 void transmitte (void)
108 {
109 1 trans_next_ok = 0;
110 1 if (*point != '\0')
111 1 {
112 2 ACC = *point;
113 2 TB80 = P;
*** ERROR C202 IN LINE 113 OF TETR.C: 'P': undefined identifier
114 2 SBUF0 = ACC;
C51 COMPILER V7.06 TETR 06/04/2008 10:36:57 PAGE 3
115 2 point++;
116 2 }
117 1 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 3 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -