📄 stciap.lst
字号:
C51 COMPILER V7.00 STCIAP 09/14/2006 16:35:47 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE STCIAP
OBJECT MODULE PLACED IN STCIAP.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE STCIAP.C OPTIMIZE(9,SIZE) BROWSE ORDER DEBUG OBJECTEXTEND
stmt level source
1 /**********************************************
2 * 文件名:STCIAP.C
3 /**********************************************/
4 #include "REG51STC.H"
5 #include "CMD16887.H"
6 #include "externxy.h"
7 //-----------------------------------------------------
8 #define DATA_FLASH_START_ADDRESS 0x8000 //STC89C58RD+
9
10 #define ENABLE_ISP 0x81 //等待时间
11 /************************************************
12 * 功能:IAP字节读
13 *************************************************/
14 uchar byte_verify(uint add)
15 {
16 1 ISP_CMD=1;
17 1 set_isp_add(add);
18 1 trigger_isp();
19 1 return(ISP_DATA);
20 1 }
21 /***********************************************
22 * 功能:字节编程
23 ************************************************/
24 void byte_program(uint add,uchar *ptr)
25 {
26 1 ISP_CMD=2;
27 1 set_isp_add(add);
28 1
29 1 ISP_DATA=*ptr;
30 1 trigger_isp();
31 1 if(*ptr!=byte_verify(add)) isp_err=1; //只要有1个字节写入不正确则出错
32 1 }
33 /**********************************************
34 * 功能:扇区擦除
35 ***********************************************/
36 void sector_erase(uint add)
37 {
38 1 ISP_CONTR=ENABLE_ISP;//等待时间
39 1 ISP_CMD=0x03;
40 1 set_isp_add(add);
41 1 trigger_isp();
42 1 iap_disable(); //关闭IAP功能
43 1 }
44 /**********************************************
45 * 功能:触发ISP
46 ***********************************************/
47 void trigger_isp(void)
48 {
49 1 EA=0;
50 1 ISP_TRIG=0x46;
51 1 ISP_TRIG=0xb9;
52 1 _nop_();_nop_();_nop_();_nop_();
53 1 EA=1;
54 1 }
55 /***********************************************
C51 COMPILER V7.00 STCIAP 09/14/2006 16:35:47 PAGE 2
56 * 功能:送地址
57 ************************************************/
58 void set_isp_add(uint add)
59 {
60 1 ISP_ADDRH=add/256;
61 1 ISP_ADDRL=add%256;
62 1 }
63 /***********************************************
64 * 功能:关闭IAP功能
65 ************************************************/
66 void iap_disable(void)
67 {
68 1 ISP_CONTR=0;
69 1 ISP_CMD=0;
70 1 ISP_TRIG=0;
71 1 }
72 /*************************************************
73 * 功能:保存IAP系统参数
74 *************************************************/
75 void iap_sys_save(uint add,uchar *pi,uchar amount)
76 { uchar i;
77 1 sector_erase(add); //扇区擦除
78 1 ISP_CONTR=ENABLE_ISP;//等待时间
79 1 for(i=0;i<amount;i++)
80 1 {
81 2 byte_program(add+i,pi+i);
82 2 }
83 1 iap_disable(); //关闭IAP功能
84 1 }
85 /*************************************************
86 * 功能:读IAP系统参数
87 *************************************************/
88 void iap_sys_read(uint add,uchar *pi,uchar amount)
89 { uchar i;
90 1 ISP_CONTR=ENABLE_ISP;//等待时间
91 1 for(i=0;i<amount;i++)
92 1 {
93 2 *(pi+i)=byte_verify(add+i);
94 2 }
95 1 iap_disable(); //关闭IAP功能
96 1 }
97 /*************************************************
98 * 功能:恢复系统参数
99 **************************************************/
100 void renew_sysdata(void)
101 { void *pt;
102 1 pt=&residue_a;
103 1 iap_sys_read(DATA_FLASH_START_ADDRESS,pt,20);
104 1 }
105 /*************************************************
106 * 功能:系统参数备份
107 **************************************************/
108 void backup_sysdata(void)
109 { void *pt;
110 1 pt=&residue_a;
111 1 iap_sys_save(DATA_FLASH_START_ADDRESS,pt,20);
112 1 pt=&invoice_number; //发票编号
113 1 writebyteseq(506,pt,4);
114 1 }
115
116 /*************************************************
117 * 功能:恢复打印格式
C51 COMPILER V7.00 STCIAP 09/14/2006 16:35:47 PAGE 3
118 **************************************************/
119 void renew_printer_format(void)
120 { void *pt;
121 1 pt=&print_format;
122 1 iap_sys_read(DATA_FLASH_START_ADDRESS+512,pt,150);
123 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 299 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 19
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 + -