当前位置:文档之家› C8051F040的RS485收发程序

C8051F040的RS485收发程序


void main()
{
WDTCN = 0x07;
//看门狗禁止
WDTCN = 0xDE;
WDTCN = 0xAD;
os_init();
port_init();
uart0_init();
time1_init();
interrput_init();
transmit_RS485(); while(1) {
i=0; for(i=0;i<50000;i++)
for(j=0;j<10;j++); }
SFRPAGE = UART0_PAGE;
gate = 0;
}
}
/*端口初始化-------------------------------------*/ void port_init() {
SFRPAGE = CONFIG_PAGE;
XBR0 = 0x04; XBR1 = 0x00; XBR2 = 0x40; XBR3 = 0x00;
#include "c8051F040.h" #define uchar unsigned char #define uint unsigned int
void port_init(); void os_init(); void uart0_init(); void time1_init(); void interrput_init(); void transmit_RS485(); void delay();
void interrput_uart0() interrupt 4
{
SFRPAGE = UART0_PAGE;
if(TI0 == 1)
{
TI0 = 0;
}
if(RI0 == 1)
{
RI0 = 0;
g = SBUF0;
}
}
/*RS485发送数据程序---------------------------------------*/
sbit gate = P0^2; uchar g; uchar xx[15]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xaa,0xbb,0xcc,0xdd ,0xee,0xff};
/*主函数-----------------------------------------------------*/
}
/*中断程序初始化--------------------------------------*/
void interrput_init()
{
EA = 1;
//允许所有中断
ES0 = 1;
//允许uart0中断
}
/*uart0中断服务程序---------------------------------------*/
//交叉开关配置使能,UART0配置在P0.0-P0.1
P0MDOUT = 0Xff;
}
/*系统时钟初始化
-----------------------------------------------------------*/
void os_init()
{
int i = 0;
SFRPAGE = CONFIG_PAGE;
}
/*串口初始化,选择UART0--------------------------------------*/
void uart0_init()
{
SFRPAGE = UART0_PAGE;
SCON0 = 0x50;
SCON0 &= 0xFC;
//清中断标志
SSTA0 = 0x00;
}
/*定时器初始化,作为UART0的波特率发生器------------------------*/
void time1_init()
{
SFRPAGE = TIMER01_PAGE;
TCON
= 0X40;
//TR1=1 定时器允许
TMOD
= 0x20;
//T1M1=1 T1M0=0 定时器工作在方式
CKCON = 0x10;
TH1
= 0xb8;
//装初值,波特率为
TL1
= 0xb8;
TR1=1;
OSCXCN = 0x67;
//外部.1184M晶振
for (i = 0; i < 3000; i++);
//等待外部晶振稳

while ((OSCXCN & 0x80) == 0);
CLKSEL = 0x01;
//系统时钟不分频
OSCICN = 0x00;
// 将内部晶振关闭,
也可不关闭,不关闭时MCU耗能高
void transmit_RS485()
{
uchar i;
ห้องสมุดไป่ตู้
gate = 1;
for(i=0;i<15;i++)
{
SBUF0 = xx[i];
delay();
}
}
/*延时程序---------------------------------------*/
void delay()
{
uint i,j;
相关主题