📄 cah.lst
字号:
C51 COMPILER V7.50 CAH 10/02/2007 09:46:49 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE CAH
OBJECT MODULE PLACED IN Cah.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE Cah.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"reg51.h"
2 #include<LCD1602.h>
3 #include "lcd1602.c"
4 #include "hardware.h"
5 sbit P1_7= P1^7;
6 unsigned int c=0;
7 unsigned char code_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
8 0x80,0x90};
9 unsigned char mark=0;
10 unsigned int swit=0;
11 int i,k,m,led=0,lednum=0,lcd=0;
12 char x=0x40,l=0;
13
14 init_rs232(void)/*初始化串行端口*/
15 {
16 1 SCON=0X50; //设定串行接口工作模式1,允许接收数据
17 1 TMOD=0X20; //设定计时器1 工作模式2
18 1 TH1=0XFD; //设定波特率为9600BPS(用在普通89C51上,11.0592MHZ)
19 1 TR1=1; //启动计时器1开始计数
20 1 //TI=1; //发送准备好
21 1 }
22
23 void delay(unsigned int n) //延时
24 {
25 1 unsigned int i=0;
26 1 unsigned char y;
27 1
28 1 for(i=0; i<n; i++);
29 1 for(y=0; y<0; y++);
30 1
31 1 }
32
33 void kk(){
34 1
35 1 if(c==255){
36 2 mark=0;
37 2 led=0;
38 2 swit=0;
39 2 P1=0xff;
40 2 P0=0xff;
41 2
42 2 return ;
43 2 }
44 1 if(mark==0){
45 2 mark=c;
46 2 if(mark==4){
47 3 P1_7=~P1_7;
48 3 }
49 2 return ;
50 2 }else if(mark==1){//LED模式
51 2 switch(c){
52 3 case 0: P0=0xff; break; //LED1亮
53 3 case 1: P0=0xfe; break; //LED2亮
54 3 case 2: P0=0xfd; break; //LED3亮
55 3 case 3: P0=0xfb; break; //LED4亮
C51 COMPILER V7.50 CAH 10/02/2007 09:46:49 PAGE 2
56 3 case 4: P0=0xf7; break; //LED5亮
57 3 case 5: P0=0xef; break; //LED8亮
58 3 case 6: P0=0xdf; break; //LED6亮
59 3 case 7: P0=0xbf; break; //LED7亮
60 3 case 8: P0=0x7f; break; //LED8亮
61 3 case 9: P0=0xff; break; //全灭
62 3 case 10: P0=0; break; //全亮
63 3 default: break;
64 3 }
65 2 }else if(mark==2){//数码管模式
66 2 if(led<2){
67 3 swit=c;
68 3 led=2;
69 3 }else{
70 3 led=1;
71 3 swit=c*200+swit;
72 3 }
73 2
74 2 }else if(mark==3){//液晶屏模式
75 2 // lcd=1;
76 2 }else if(mark==4){//蜂鸣
77 2 P1_7=~P1_7;
78 2 }
79 1
80 1 }
81 serial() interrupt 4 using 1 //串口中断程序
82 {
83 1
84 1 if(RI==1) //接收中断
85 1 {
86 2 RI=0; //清标志位
87 2 c=SBUF; //把接收到的数据发到缓冲区,引起发送中断,把收到的数据发回去
88 2 kk();
89 2 }
90 1 if(TI==1) //发送中断
91 1 {
92 2 TI=0; //清标志
93 2 //SBUF=c; //C的数据装到缓冲区
94 2 }
95 1 }
96
97
98
99 void main()
100 {
101 1
102 1 P0=0xff;
103 1 P1=0Xff;
104 1 init_rs232();
105 1 IE=0x90;
106 1 //LCD_cls();
107 1 //LCD_initial();
108 1 mark=0;
109 1 led=0;
110 1 swit=0;
111 1 P1=0xff;
112 1 P0=0xff;
113 1
114 1 while(1)
115 1 {
116 2
117 2 if(mark==2 && led>0){
C51 COMPILER V7.50 CAH 10/02/2007 09:46:49 PAGE 3
118 3
119 3 P0=code_Tab[swit%10];
120 3 P1=0xf7;
121 3 delay(300);
122 3
123 3 P1=0xff;
124 3 P0=code_Tab[(swit/10) % 10];
125 3 P1=0xfb;
126 3 delay(300);
127 3 P1=0xff;
128 3
129 3 P0=code_Tab[(swit/100) % 10];
130 3 P1=0xfd;
131 3 delay(300);
132 3 P1=0xff;
133 3 P0=code_Tab[(swit/1000) % 10];
134 3 P1=0xfe;
135 3 delay(300);
136 3 P1=0xff;
137 3 }else if(lcd ==1){
138 3
139 3 // LCD_printc('i');
140 3 //return;
141 3 }
142 2 }
143 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 623 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 29 3
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 + -