📄 sm5964.lst
字号:
C51 COMPILER V7.10 SM5964 09/18/2005 20:22:27 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE SM5964
OBJECT MODULE PLACED IN SM5964.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE SM5964.C OPTIMIZE(SIZE) BROWSE NOAREGS DEBUG OBJECTEXTEND
line level source
1 /***************************************************************
2 ;关于SM5964的三种程序示例
3 ;1.使用看门狗的程序 示例
4 ;2.可反复进入ISP的程序 示例
5 ;3.利用剩余的Falsh空间存储数据 示例
6 ;关键提示:CODE的绝对定位,方法在code_at.c中
7 ;本例由上海单片机网友情提供(www.shmcu.com)
8 ****************************************************************/
9
10 #include <intrins.h>
11 #include <p89c51rx.h>
12 #include <head.h>
13
14
15 void main(void)
16 {
17 1 uchar i,temp[6];
18 1
19 1 WDTC_DOG(); //使能狗
20 1 ISP_ok = 0;
21 1
22 1 for (;;)
23 1 {
24 2 WDTC_DOG();//喂狗
25 2 EA = 1;
26 2
27 2 //条件判断,是否进入ISP //
28 2 if(!P1_6 && !P1_7)//条件由自己任意发挥... //
29 2 { //
30 3 ISP_ok = 1;//进入ISP 条件成立 //
31 3 } //
32 2 //
33 2 if(ISP_ok != 0)//test ISP // 可反复进入ISP的程序 示例
34 2 { //
35 3 ISP_ok = 0; //
36 3 CLOSE_DOG();//关狗 //
37 3 BEEP = 0;//TEST //
38 3 DelayMs(100); //
39 3 BEEP = 1;//TEST //
40 3 GoToIsp(); //
41 3 } //
42 2
43 2
44 2 WDTC_DOG();//喂狗
45 2 for(i=0;i<6;i++)//test
46 2 {
47 3 data_buf[i] = 0x55;//此数据用来下面的测试
48 3 }
49 2
50 2 //Flash页擦除 //
51 2 ISPFAH = (uchar)(((uint)Nkey_a)>>8); //
52 2 ISPFAL = (uchar)Nkey_a; //
53 2 ISPFD = 0x55; //
54 2 ISPFD = 0xaa; //
55 2 ISPFD = 0x55; //
C51 COMPILER V7.10 SM5964 09/18/2005 20:22:27 PAGE 2
56 2 ISPC = 0x82;//start to Page erase (512 byte) //
57 2 //
58 2 //写Flash // 利用剩余的Falsh空间存储数据 示例
59 2 ISPFAH = (uchar)(((uint)Nkey_a)>>8); //
60 2 ISPFAL = (uchar)Nkey_a; //
61 2 for(i=0;i<6;i++)//连续写6字节 //
62 2 { //
63 3 ISPFD = data_buf[i]; //
64 3 ISPC = 0x80;//start to program //
65 3 ISPFAL ++; //
66 3 } //
67 2 DelayMs(200);//此延时是必须的! //
68 2
69 2
70 2 WDTC_DOG();//喂狗
71 2 for(i=0;i<6;i++)//test
72 2 {
73 3 temp[i] = Nkey_a[i];//读出数据,验证之
74 3 }
75 2 }//for(;;)
76 1
77 1 }
78
79 /***************************************************************
80 ;DOG
81 ****************************************************************/
82 void WDTC_DOG(void)//在8958A上,看门狗能正常工作的。
83 {
84 1 WDTKEY = 0x1e;
85 1 WDTKEY = 0xe1;//set
86 1 WDTC = 0xa7;//dog_data; //喂狗
87 1 // SCONF = 0x01; //关ALEI
88 1 WDTKEY = 0xe1;
89 1 WDTKEY = 0x1e;//only read
90 1 }
91
92 void CLOSE_DOG(void)//关狗
93 {
94 1 WDTKEY = 0x1e;
95 1 WDTKEY = 0xe1;//set
96 1 WDTC = 0x00;//dog_data; //喂狗
97 1 WDTKEY = 0xe1;
98 1 WDTKEY = 0x1e;//only read
99 1 }
100
101 /***************************************************************
102 ;Delay time
103 ****************************************************************/
104 void DelayMs(unsigned int number)
105 {
106 1 unsigned char temp;
107 1 for(;number!=0;number--)
108 1 {
109 2 for(temp=112;temp!=0;temp--)
110 2 {
111 3 _nop_();
112 3 }
113 2 }
114 1 }
115
116
C51 COMPILER V7.10 SM5964 09/18/2005 20:22:27 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 195 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = 10 ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -