C51---串口通信---虚拟终端模仿

来源:互联网 发布:网络侠客行txt全集下载 编辑:程序博客网 时间:2024/06/05 16:06

//C51串口相关寄存器

 

//C51存储类型

//C51    SCON寄存器






//C51  波特率计算




//查询方式1,无奇偶校验/*#include <reg51.h>unsigned char code str[]="Hello World";unsigned char i=0;void main(){TMOD=0x20;//定时器1,方式2,8位自动重加载TH1=0xFD;TL1=0xFD;//19200波特率PCON=0x80;//SMOD=1.波特率加倍SCON=0x40;//方式1,1位起始位,8位数据位,1位停止位TR1=1;//启动定时器1for(i=0;i<13;++i){SBUF=str[i];while(0==TI);TI=0;}while(1);}*//*//中断方式发送#include <reg51.h>unsigned char code str[]="Hello World";unsigned char i=0;void main(){TMOD=0x20;//定时器1,方式2,8位自动重加载TH1=0xFD;TL1=0xFD;//19200波特率PCON=0x80;//SMOD=1.波特率加倍SCON=0x50;//方式1,1位起始位,8位数据位,1位停止位ES=1;//开串口中断EA=1;//开总中断TR1=1;//启动定时器1while(i<12){SBUF=str[i];//写入数据while(0==TI);//等待发送结束TI=0;//清空终端标志位}while(1);}void es_ISR(void) interrupt 4 using 3{++i;//if(i>11)//加上此两行,可循环发送//i=0;}*///波特率2400,方式1带奇偶校验的发送“hello,world!”//用第7位做奇偶校验位/*#include <reg51.h>unsigned char bdata temp;//可位寻址片内数据存储区0x20--0x2F,允许位与字节混合访问(16字节)sbit temp_7=temp^7;//取得第7位数据unsigned char code str[]="Hello World";unsigned char * p;void main(){p=str;//获得字符串TMOD=0x20;//定时器1,方式2,8位自动重加载TH1=0xF4;TL1=0xF4;//2400波特率,11.0592MHzSCON=0x40;//方式1,1位起始位,8位数据位,1位停止位ES=1;//开串口中断EA=1;//开总中断TR1=1;//启动定时器1while(*p!='\0'){temp=*p;ACC=temp;//数据放到累加器A(ACC)中,默认偶校验temp_7=P;//PSW寄存器中自动生成奇偶位P,表征有奇数或偶数个1,当累加器A中1的个数为奇数个时候,P=1SBUF=temp;//写入数据while(0==TI);//等待发送结束TI=0;//清空终端标志位}while(1);}void es_ISR(void) interrupt 4 using 3{++p;}*///波特率2400,方式1带奇偶校验的发送“hello,world!”//用第TB8做奇偶校验位#include <reg51.h>unsigned char code str[]="Hello World";unsigned char * p;void main(){p=str;//获得字符串TMOD=0x20;//定时器1,方式2,8位自动重加载TH1=0xF4;TL1=0xF4;//2400波特率,11.0592MHzSCON=0x40;//方式1,1位起始位,8位数据位,1位停止位ES=1;//开串口中断EA=1;//开总中断TR1=1;//启动定时器1while(*p!='\0'){ACC=*p;//数据放到累加器A(ACC)中,默认偶校验TB8=P;//PSW寄存器中自动生成奇偶位P,表征有奇数或偶数个1,当累加器A中1的个数为奇数个时候,P=1SBUF=*p;//写入数据while(0==TI);//等待发送结束TI=0;//清空终端标志位}while(1);}void es_ISR(void) interrupt 4 using 3{++p;}


//结果




原创粉丝点击