📄 sp23x9 demo.lst
字号:
C51 COMPILER V7.20 SP23X9_DEMO 09/19/2007 15:50:29 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE SP23X9_DEMO
OBJECT MODULE PLACED IN SP23x9 demo.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE SP23x9 demo.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!申 明!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
2 //本驱动程序属于成都视普科技公司所有,仅允许免费用于本公司销售的产品中,未 //
3 //经书面许可任何单位或个人不可将本程序用于其它用途,否则将追究其法律责任 //
4 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5 /***************************************************************************
6 SP2339_SP2349_driver.c source file SP2339/SP2349 serial communication
7 example for MCS-51 MCU (oscillating crystal: 11.0592MHz)
8 Author: ShouPing Yang , 2007-09-18
9 ***************************************************************************/
10
11 //说明:AT89C52在11.0592Mhz下不能获得76.8Kbps的波特率,必须采用22.1184Mhz!!!!!
12
13 #include <reg52.h>
14 #define uchar unsigned char
15 #define uint unsigned int
16
17 uchar idata TempBuffer[32]; //子串口数据发送缓冲区(大小可由用户随意配置)
18
19 uchar idata SendByteNum,SendOverFlag; //
20
21 /*****************************************************************************
22 功能:设定SP2339/SP2349输入、输出地址,可根据实际电路修改
23 *****************************************************************************/
24 //sbit AdrIn0 =P1^0; /* 连接到SP2349的PIN0(ADRO0),可以不用连接*/
25 //sbit AdrIn1 =P1^1; /* 连接到SP2349的PIN1(ADRO1),可以不用连接*/
26 sbit AdrOut0=P1^2; /* 连接到SP2349的PIN18(ADRI0)*/
27 sbit AdrOut1=P1^3; /* 连接到SP2349的PIN17(ADRI1)*/
28
29 serial () interrupt 4 {
30 1 if(RI){ //由于不会同时接收两个串口的数据,所以不需要判断接收地址
31 2 RI=0;
32 2 TempBuffer[--SendByteNum]=SBUF; //SendByteNum需要初始化
33 2 }
34 1 else{
35 2 TI=0;
36 2 SendOverFlag=0;
37 2 if(SendByteNum){ //如果数据还没有发送结束,则继续发送
38 3 SBUF=TempBuffer[--SendByteNum];
39 3 }
40 2 }
41 1 }
42
43 void init_serialcomm(void){
44 1 SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
45 1 T2CON |= 0x34; //TMOD: timer 2, mode 2, 16-bit reload,timer 2 run
46 1 RCAP2H = 0xFF; //Baud:76800 fosc=22.1184MHz
47 1 RCAP2L = 0xF7; //Baud:76800 fosc=22.1184MHz
48 1 IE |= 0x90; //Enable Serial Interrupt
49 1 IP = 0x10; //只允许串口中断为最高优先级,其它为次优先级。
50 1 SendByteNum=0; //初始化串口0发送缓冲区"空"
51 1 }
52
53 void SetUartMode(uchar SerialNum){//"0"设置串口0为单串口,否则设置串口1为单串口
54 1 if(SerialNum){ //设置串口1为单串口模式(波特率为:57600)
55 2 RCAP2H = 0xFF; //Baud:76800 fosc=22.1184MHz
C51 COMPILER V7.20 SP23X9_DEMO 09/19/2007 15:50:29 PAGE 2
56 2 RCAP2L = 0xF7; //Baud:76800 fosc=22.1184MHz
57 2 AdrOut0=1;
58 2 AdrOut1=1;
59 2 SBUF=0x0D; //设置为单串口模式1
60 2 SendOverFlag=1;
61 2 while(SendOverFlag);
62 2 AdrOut0=1;
63 2 AdrOut1=0;
64 2 RCAP2H = 0xFF; //Baud:57600 fosc=22.1184MHz
65 2 RCAP2L = 0xF4; //Baud:57600 fosc=22.1184MHz
66 2 }
67 1 else{ //设置串口0为单串口模式(波特率为:115200)
68 2 RCAP2H = 0xFF; //Baud:76800 fosc=22.1184MHz
69 2 RCAP2L = 0xF7; //Baud:76800 fosc=22.1184MHz
70 2 AdrOut0=1;
71 2 AdrOut1=1;
72 2 SBUF=0x0C; //设置为单串口模式0
73 2 SendOverFlag=1;
74 2 while(SendOverFlag);
75 2 AdrOut0=0;
76 2 AdrOut1=0;
77 2 RCAP2H = 0xFF; //Baud:115200 fosc=22.1184MHz
78 2 RCAP2L = 0xFA; //Baud:115200 fosc=22.1184MHz
79 2 }
80 1 }
81
82 main(){
83 1 uchar i=0;
84 1 init_serialcomm(); //初始化MCU串口波特率和所有子串口波特率
85 1 SetUartMode(0); //设置串口0为单串口模式
86 1 TempBuffer[i++]=0x30; //串口0依次发送"0x37"、"0x36" ..."0x30"
87 1 TempBuffer[i++]=0x31;
88 1 TempBuffer[i++]=0x32;
89 1 TempBuffer[i++]=0x33;
90 1 TempBuffer[i++]=0x34;
91 1 TempBuffer[i++]=0x35;
92 1 TempBuffer[i++]=0x36;
93 1 TempBuffer[i++]=0x37;
94 1 SendByteNum=i;
95 1 TI=1;
96 1 while(SendByteNum); //等待串口0的数据发送结束
97 1
98 1 SetUartMode(1); //设置串口1为单串口模式
99 1 TempBuffer[i++]=0x40;
100 1 TempBuffer[i++]=0x41;
101 1 TempBuffer[i++]=0x42;
102 1 TempBuffer[i++]=0x43;
103 1 TempBuffer[i++]=0x44;
104 1 TempBuffer[i++]=0x45;
105 1 TempBuffer[i++]=0x46;
106 1 TempBuffer[i++]=0x47;
107 1 SendByteNum=i;
108 1 TI=1;
109 1 while(SendByteNum); //等待串口1的数据发送结束
110 1 while(1);
111 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 316 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
C51 COMPILER V7.20 SP23X9_DEMO 09/19/2007 15:50:29 PAGE 3
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 34 ----
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 + -