📄 www.ourhc.cn.lst
字号:
C51 COMPILER V8.05a WWW_OURHC_CN 06/11/2012 23:08:27 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE WWW_OURHC_CN
OBJECT MODULE PLACED IN www.ourhc.cn.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE www.ourhc.cn.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:STC15F104E系列单片机之串口、外部中断、掉电存储、定时器同时应用程序
5 使用芯片:STC15F104E系列单片机
6 晶振:11.0592MHZ
7 波特率:9600
8 编译环境:Keil
9 作者:zhangxinchun
10 网站:www.ourhc.cn
11 淘宝店:
12 汇诚科技 http://ourhc.taobao.com
13 郑兴电子直销部 http://shop68451856.taobao.com
14 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
15
16 *********************************************************************/
17 /********************************************************************
18 单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.
19 单片机接收PC机发送的数据码表如下:
20
21 01、开:PC发送'A';
22 02、关:PC发送'B';
23 03、输出状态查询:PC发送C;单片机返回输出状态‘A’表示开 ‘B’表示关;
24 04、继电器状态取反:PC发送D 继电器状态取反
25 *********************************************************************/
26 #include "reg52.h"
27 #include <intrins.H>
28 #define uchar unsigned char //宏定义字符型变量
29 #define uint unsigned int //宏定义整型变量
30 /********************************************************************
31 eeprom函数声明
32 *********************************************************************/
33 extern void IapIdle(); //操作函数
34 extern uchar IapReadByte(uint addr); //读取函数
35 extern void IapProgramByte(uint addr,uchar dat); //写入函数
36 extern void IapEraseSector(uint addr); //擦除函数
37 /********************************************************************
38 波特率设定
39 *********************************************************************/
40 //#define BAUD 0XF400 //1200bps@ 11.0592MHZ
41 //#define BAUD 0XFA00 //2400bps@ 11.0592MHZ
42 //#define BAUD 0XFD00 //4800bps@ 11.0592MHZ
43 #define BAUD 0XFE80 //9600bps@ 11.0592MHZ
44 //#define BAUD 0XFF40 //19200bps@ 11.0592MHZ
45 //#define BAUD 0XFFA0 //38400bps@ 11.0592MHZ
46 uchar miao,fen,times;
47 uchar dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
48 sbit P33=P3^3; //定义输出脚
49
50 /********************************************************************
51 定义特殊寄存器
52 *********************************************************************/
53 sfr AUXR = 0x8E; //辅助寄存器
54 sbit RXB=P3^0;
55 sbit TXB=P3^1;
C51 COMPILER V8.05a WWW_OURHC_CN 06/11/2012 23:08:27 PAGE 2
56 /********************************************************************
57 定义数据类型
58 *********************************************************************/
59 uchar TBUF,RBUF;
60 uchar TDAT,RDAT;
61 uchar TCNT,RCNT;
62 uchar TBIT,RBIT;
63 uint TING,RING;
64 uint TEND,REND;
65
66 void UART_INIT(); //声明函数
67
68 uchar t,r; //定义数据类型
69 uchar but[16]; //数据存储数组
70 /********************************************************************
71 寄存器设置
72 *********************************************************************/
73 sfr IAP_DATA =0xc2; //数据寄存器
74 sfr IAP_ADDRH =0xc3; //地址寄存器
75 sfr IAP_ADDRL =0xc4; //地址寄存器
76 sfr IAP_CMD =0xc5; //命令寄存器
77 sfr IAP_TRIG =0xc6; //触发寄存器
78 sfr IAP_CONTR =0xc7; //擦除寄存器
79 /********************************************************************
80 命令定义
81 *********************************************************************/
82 #define CMD_IDLE 0 //EEPROM无操作
83 #define CMD_READ 1 //读取字节
84 #define CMD_PROGRAM 2 //写入字节
85 #define CMD_ERASE 3 //擦除字节
86 /********************************************************************
87 编程周期由晶振决定
88 *********************************************************************/
89 //#define ENABLE_IAP 0X80 //编程周期由晶振决定(如果<30MHZ选用此项)
90 //#define ENABLE_IAP 0X81 //编程周期由晶振决定(如果<24MHZ选用此项)
91 //#define ENABLE_IAP 0X82 //编程周期由晶振决定(如果<20MHZ选用此项)
92 #define ENABLE_IAP 0X83 //编程周期由晶振决定(如果<12MHZ选用此项)
93 //#define ENABLE_IAP 0X84 //编程周期由晶振决定(如果<6MHZ选用此项)
94 //#define ENABLE_IAP 0X85 //编程周期由晶振决定(如果<3MHZ选用此项)
95 //#define ENABLE_IAP 0X86 //编程周期由晶振决定(如果<2MHZ选用此项)
96 //#define ENABLE_IAP 0X87 //编程周期由晶振决定(如果<1MHZ选用此项)
97
98 #define IAP_ADDRESS 0X0000 //内部EEPROM地址
99 /********************************************************************
100 延时函数
101 *********************************************************************/
102 void delay(uchar t)
103 {
104 1 uchar i,j;
105 1 for(i=0;i<t;i++)
106 1 {
107 2 for(j=13;j>0;j--);
108 2 { ;
109 3 }
110 2 }
111 1 }
112 /********************************************************************
113 定时器0初始化函数
114 *********************************************************************/
115 void TIMER0_INIT(void)
116 {
117 1 TMOD=0X00; //定时器T0设定
C51 COMPILER V8.05a WWW_OURHC_CN 06/11/2012 23:08:27 PAGE 3
118 1 AUXR|=0X80; //辅助寄存器
119 1 TL0=BAUD; //十六位寄存器
120 1 TH0=BAUD>>8; //十六位寄存器
121 1 TR0=1; //开定时器
122 1 ET0=1;
123 1 PT0=1;
124 1 }
125 /********************************************************************
126 定时器1初始化函数
127 *********************************************************************/
128 void TIMER1_INIT(void)
129 {
130 1 TH1=(65536-10000)/256; //对TH1 TL1赋值
131 1 TL1=(65536-10000)%256;
132 1 ET1=1;
133 1 TR1=1; //开始定时
134 1 }
135 /********************************************************************
136 外部中断0初始化
137 *********************************************************************/
138 void Init_exint(void)
139 {
140 1 INT0=1; //下降沿触发
141 1 IT0=1;
142 1 EX0=1;
143 1 }
144 /********************************************************************
145 功能:串口初始化,波特率9600,方式1
146 *********************************************************************/
147 void UART_INIT()
148 {
149 1 TING=0;
150 1 RING=0;
151 1
152 1 TEND=1;
153 1 REND=0;
154 1
155 1 TCNT=0;
156 1 RCNT=0;
157 1 }
158
159 /********************************************************************
160 函数初始化
161 *********************************************************************/
162 void IapIdle(); //操作函数
163 uchar IapReadByte(uint addr); //读取函数
164 void IapProgramByte(uint addr,uchar dat); //写入函数
165 void IapEraseSector(uint addr); //擦除函数
166
167 /********************************************************************
168 操作函数
169 *********************************************************************/
170 void IapIdle()
171 {
172 1 IAP_CONTR=0;
173 1 IAP_CMD=0;
174 1 IAP_TRIG=0;
175 1 IAP_ADDRH=0X80;
176 1 IAP_ADDRL=0;
177 1 }
178
179 /********************************************************************
C51 COMPILER V8.05a WWW_OURHC_CN 06/11/2012 23:08:27 PAGE 4
180 读取一个字节函数
181 *********************************************************************/
182 uchar IapReadByte(uint addr)
183 {
184 1 uchar dat;
185 1 IAP_CONTR=ENABLE_IAP;
186 1 IAP_CMD=CMD_READ;
187 1 IAP_ADDRL=addr;
188 1 IAP_ADDRH=addr>>8;
189 1 IAP_TRIG=0X5A;
190 1 IAP_TRIG=0XA5;
191 1 _nop_();
192 1 _nop_();
193 1 _nop_();
194 1 dat=IAP_DATA;
195 1 IapIdle();
196 1 return dat;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -