📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 10/29/2006 14:33:05 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <absacc.h>
2 #include <intrins.h>
3 #include <./Atmel/at89x51.h>
4
5 //定义常量
6 #define PrintStart 0x30
7 #define PrintLen 0x10
8
9 #define para8255Port_Mode 0
10 #define para8255Port_A 1
11 #define para8255Port_B 2
12 #define para8255Port_C 3
13
14 #define para8255reg_Mode XBYTE[0x7FFF]
15 #define para8255reg_PA XBYTE[0x7FFC]
16 #define para8255reg_PB XBYTE[0x7FFD]
17 #define para8255reg_PC XBYTE[0x7FFE]
18
19 //定义变量
20 sfr para8255_Bus=0x80;
21 unsigned char data *Print_ptr;
22
23 bit print_on;
24 bit RW_8255;
25
26 unsigned char g_FirstByteAddr;
27 unsigned char g_ByteNum;
28
29 unsigned char g_ReadRegFor8255;
30 unsigned char g_WriteRegFor8255;
31
32
33 unsigned char CMD_8255;
34 unsigned char PortX_8255;
35 unsigned char ByteToBus;
36
37 //函数声明
38 void Print_fstByte(g_FirstByteAddr,g_ByteNum);
39 void Print_aByte(void);
40 void RdWt_8255(RW_8255,PortX_8255,ByteToBus);
41
42
43 /*******************************************************
44 功能:主函数
45 描述:初始化、启动打印、进入空闲等待模式
46 参数:无
47 返回:无
48 ********************************************************/
49 main()
50 {
51 1
52 1 P1=0x00;
53 1 P2=0x00;
54 1 P3=0xFF;
55 1 IE=0x80;
C51 COMPILER V7.06 MAIN 10/29/2006 14:33:05 PAGE 2
56 1 print_on=0;
57 1 g_FirstByteAddr = 0x30;
58 1 g_ByteNum = 0x00;
59 1 RdWt_8255(1,0,0xA4);//初始化8255
60 1
61 1 while(1)
62 1 {
63 2 //此处添加其它程序,例如接收或等待打印命令;
64 2 //确认打印,则print_on=1;
65 2 if (print_on)
66 2 {
67 3 EX1 = 1;
68 3 Print_fstByte(PrintStart,PrintLen);
69 3 };//end of if (print_on)
70 2
71 2
72 2 };//end of while(1)
73 1
74 1
75 1
76 1
77 1 }
78
79 /*******************************************************
80 功能:RW_8255
81 描述:读写8255
82 参数:RW_8255:1表示写8255,0表示读8255
83 PortX_8255:指示8255工作端口
84 ByteToBus:要写的数据
85 返回:如果RW_8255参数为0,则返回读结果g_ReadRegFor8255
86 ********************************************************/
87 void RdWt_8255(RW_8255,PortX_8255,ByteToBus)
88 {
89 1 if(RW_8255)
90 1 {
91 2 switch(PortX_8255){
92 3 case para8255Port_Mode:
93 3 para8255reg_Mode = ByteToBus;
94 3 break;
95 3 case para8255Port_A:
96 3 para8255reg_PA = ByteToBus;
97 3 break;
98 3 case para8255Port_B:
99 3 para8255reg_PB = ByteToBus;
100 3 break;
101 3 case para8255Port_C:
102 3 para8255reg_PC = ByteToBus;
103 3 break;
104 3 default:
105 3 para8255reg_PA = 0x00;
106 3 para8255reg_PB = 0x00;
107 3 para8255reg_PC = 0x00;
108 3 break;
109 3 };//end of switch(PortX_8255)
110 2
111 2
112 2 }
113 1 else
114 1 {
115 2 switch(PortX_8255){
116 3 case para8255Port_Mode:
117 3 g_ReadRegFor8255 = para8255reg_Mode;
C51 COMPILER V7.06 MAIN 10/29/2006 14:33:05 PAGE 3
118 3 break;
119 3 case para8255Port_A:
120 3 g_ReadRegFor8255 = para8255reg_PA;
121 3 break;
122 3 case para8255Port_B:
123 3 g_ReadRegFor8255 = para8255reg_PB;
124 3 break;
125 3 case para8255Port_C:
126 3 g_ReadRegFor8255 = para8255reg_PC;
127 3 break;
128 3 default:
129 3 g_ReadRegFor8255 = 0x00;
130 3 break;
131 3 };//end of switch(PortX_8255)
132 2
133 2 };//end of if(RW_8255)
134 1
135 1 }//end of this function
136
137 /*******************************************************
138 功能:Print_fstByte
139 描述:打印第一个字节
140 参数:g_FirstByteAddr,g_ByteNum
141 返回:无
142 ********************************************************/
143 void Print_fstByte(g_FirstByteAddr,g_ByteNum)
144 {
145 1
146 1 Print_ptr = g_FirstByteAddr;
147 1 RdWt_8255(1,1,*Print_ptr);
148 1 Print_ptr++;
149 1 g_FirstByteAddr = *Print_ptr;
150 1 RdWt_8255(1,1,0x0E);
151 1 _nop_();
152 1 RdWt_8255(1,1,0x0F);
153 1 _nop_();
154 1 g_ByteNum--;
155 1
156 1
157 1 }//end of this function
158
159 /*******************************************************
160 功能:Print_aByte
161 描述:通过中断打印一个字节
162 参数:无
163 返回:无
164 ********************************************************/
165 void Print_aByte(void)interrupt 2
166 {
167 1 if(g_ByteNum!=0)
168 1 {
169 2 Print_ptr = g_FirstByteAddr;
170 2 RdWt_8255(1,1,*Print_ptr);
171 2 Print_ptr++;
172 2 g_FirstByteAddr = *Print_ptr;
173 2 RdWt_8255(1,1,0x0E);
174 2 _nop_();
175 2 RdWt_8255(1,1,0x0F);
176 2 _nop_();
177 2 g_ByteNum--;
178 2 }
179 1 else
C51 COMPILER V7.06 MAIN 10/29/2006 14:33:05 PAGE 4
180 1 {
181 2 print_on = 0;
182 2 EX1 = 0;
183 2 };
184 1
185 1
186 1 }//end of this function
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 282 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 2
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -