📄 venus.lst
字号:
C51 COMPILER V7.02b VENUS 01/18/2005 21:43:57 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE VENUS
OBJECT MODULE PLACED IN venus.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE venus.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /****************************************/
2 /* Copyright (c) 2004, 通信工程学院陈斌 */
3 /* All rights reserved. */
4 /* 作 者:陈斌 */
5 /****************************************/
6
7 //屏宽:240
8 //屏高:128
9
10 #include <reg51.h>
11 /* P1口 */
12 sbit P17 = 0x97;
13 sbit P16 = 0x96;
14 sbit P15 = 0x95;
15 sbit P14 = 0x94;
16 sbit P13 = 0x93;
17 sbit P12 = 0x92;
18 sbit P11 = 0x91;
19 sbit P10 = 0x90;
20 sbit P31 = 0xB1;
21 sbit P30 = 0xB0;
22
23 #include <intrins.h>
24 #include <absacc.h>
25 #include <key.h>
26 #include <extern_val.h>
27 //
28 #define lcd_page1 0x00//液晶第一屏
29 #define lcd_page2 0x0F//液晶第二屏
30 #define lcd_graphic_columns 30 //液晶图形区行长度
31 #define lcd_text_columns 30 //液晶文本区行长度
32 #define hzk_page 0 //存放汉字库的FLASH页
33 #define cshsj_page 0 //存放初始化数据的FLASH页
34 #define ID 0 //内核模块ID号
35 //
36
37 unsigned char xdata Lcd_Data_Port _at_ 0xFFFA; //液晶数据口
38 unsigned char xdata Lcd_Code_Port _at_ 0xFFFB; //液晶指令口
39 unsigned char xdata Ram_Page _at_ 0xFFFC; //RAM页控制口
40 unsigned char xdata Flash_Page _at_ 0xFFFD; //FLASH页控制口
41 unsigned char xdata Reset_Port _at_ 0xFFF9; //设备复位控制口
42 unsigned char xdata com_reg[16] _at_ 0xFFE0; //SCC2692的寄存器组
43 unsigned char data Ram_Reg; //RAM页控制口寄存器
44 unsigned char data Flash_Reg; //FLASH页控制口寄存器
45 unsigned char xdata lcd_buf[20]; //液晶显示缓冲区
46 unsigned char xdata font_data[32]; //汉字字模缓冲区
47
48 //串口通信使用的全局变量
49 unsigned char xdata rxa_buf[500],txa_buf[500],rxb_buf[500],txb_buf[500];
50 unsigned char xdata *rxa_point;
51 unsigned char xdata *txa_point;
52 unsigned char xdata *rxb_point;
53 unsigned char xdata *txb_point;
54 unsigned int data txa_lenth,txb_length,rxa_length,rxb_length;
55 unsigned char data combstatu,checksum;
C51 COMPILER V7.02b VENUS 01/18/2005 21:43:57 PAGE 2
56 bit txa_en=0,txb_en=0;
57 bit rxa_first=0,rxa_second=0,rxa_third=0,rxa_num=0,rxa_en=0,rxa_ok=0,dsp_connect=0;
58 bit rxb_first=0,rxb_second=0,rxb_third=0,rxb_num=0,rxb_en=0,rxb_ok=0,dsp_ack=0,dsp_nack=0;
59 lcd_cls(unsigned char i);
60 lcd_init();
61 sys_init();
62 print_c16(unsigned int lcd_ram_addr);
63 fprint_c16(unsigned int lcd_ram_addr);
64 print_bmp(unsigned int lcd_ram_addr,unsigned char code *bmpdata,unsigned char width,length);
65 reset_flash();
66 erase_flash(unsigned char sector);
67 program_flash(unsigned int k,unsigned char x);
68 com_a_fs(unsigned int k);
69 com_b_fs(unsigned int k);
70 unsigned char getchar();
71 move_data(unsigned char xdata *m,unsigned char xdata *n,unsigned int k);
72 long d_to_hex(unsigned char xdata *k);
73 void SetPCF8563(unsigned char timetype,unsigned char value);
74 bhsy();
75 xtcssd();
76 gzsd();
77 load_data(unsigned char i,unsigned char code *m,unsigned char j,unsigned char xdata *n,unsigned int k)
78 {
79 1 unsigned char Flash_Reg_B,Ram_Reg_B;
80 1 EA=0; //关闭中断
81 1 Flash_Reg_B=Flash_Reg;
82 1 Ram_Reg_B=Ram_Reg;
83 1 Flash_Reg=i;
84 1 Flash_Page=Flash_Reg;
85 1 Ram_Reg=j;
86 1 Ram_Page=Ram_Reg;
87 1 while (k!=0)
88 1 {
89 2 *n=*m;
90 2 n++;
91 2 m++;
92 2 k--;
93 2 }
94 1 Flash_Reg=Flash_Reg_B;
95 1 Ram_Reg=Ram_Reg_B;
96 1 Flash_Page=Flash_Reg;
97 1 Ram_Page=Ram_Reg;
98 1 EA=1; //打开中断
99 1 }
100 /*串口通信中断处理程序,占用INT0*/
101 void comtx(void) interrupt 0 using 1
102 {
103 1 unsigned char i,j;
104 1 i=com_reg[5];
105 1 if (i&0x1) //通道A发送中
106 1 {
107 2 if (txa_en)
108 2 {
109 3 com_reg[3]=*txa_point;
110 3 txa_point++;
111 3 txa_lenth--;
112 3 if (txa_lenth==0) {txa_en=0;com_reg[2]=0x09;} //同时关闭发送通道A
113 3 }
114 2 }
115 1 if (i&0x2) //通道A接收中
116 1 {
117 2 j=com_reg[3];
C51 COMPILER V7.02b VENUS 01/18/2005 21:43:57 PAGE 3
118 2 if (rxa_en)
119 2 {
120 3 *rxa_point=j;
121 3 rxa_point++;
122 3 rxa_length--;
123 3 if (rxa_length==0) {rxa_en=0;rxa_ok=1;}
124 3 }
125 2 else if (rxa_third)
126 2 {
127 3 rxa_third=0;
128 3 rxa_en=1;
129 3 rxa_length=rxa_length+j;
130 3 rxa_point=&rxa_buf;
131 3 if (rxa_length==0) {rxa_en=0;}
132 3 }
133 2 else if (rxa_second)
134 2 {
135 3 rxa_second=0;
136 3 rxa_third=1;
137 3 rxa_length=j*256;
138 3 }
139 2 else if (rxa_first)
140 2 {
141 3 rxa_first=0;
142 3 if (j==0x55) {rxa_second=1;}
143 3 }
144 2 else if (j==0xaa) {rxa_first=1;}//收包头
145 2 }
146 1 if (i&0x10) //通道B发送中
147 1 {
148 2 if (txb_en)
149 2 {
150 3 com_reg[11]=*txb_point;
151 3 txb_point++;
152 3 txb_length--;
153 3 if (txb_length==0) {txb_en=0;com_reg[10]=0x09;} //同时关闭发送通道B
154 3 }
155 2 }
156 1 if (i&0x20) //通道B接收中
157 1 {
158 2 j=com_reg[11];
159 2 if (rxb_en)
160 2 {
161 3 *rxb_point=j;
162 3 rxb_point++;
163 3 rxb_length--;
164 3 if (rxb_length==0) {rxb_en=0;rxb_ok=1;}
165 3 }
166 2 else if (rxb_third)
167 2 {
168 3 rxb_third=0;
169 3 rxb_en=1;
170 3 rxb_length=rxb_length+j;
171 3 rxb_point=&rxb_buf;
172 3 if (rxb_length==0) {rxb_en=0;}
173 3 }
174 2 else if (rxb_second)
175 2 {
176 3 rxb_second=0;
177 3 rxb_third=1;
178 3 rxb_length=j*256;
179 3 }
C51 COMPILER V7.02b VENUS 01/18/2005 21:43:57 PAGE 4
180 2 else if (rxb_first)
181 2 {
182 3 rxb_first=0;
183 3 if (j==0x55) {rxb_second=1;}
184 3 }
185 2 else if (j==0xaa) {rxb_first=1;}//收包头
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -