单片机IO口模拟串口程序发送接收
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*************************************************************** *
在单片机上模拟了一个串口,使用P2.1作为发送端* 把单片机中存放的数据
通过P2.1作为串口TXD发送出去
***************************************************************/#incl ude
拟串口的波特率为2400bps fosc=11.0592MHz TL0 = 0x7F; // 定时器0
初始值,延时417us,目的是令模拟串口的波特率为2400bps fosc=11.0592MHz // TH0 = 0xFD; // 定时器0初始值,延时417us,目的是令模拟串口的波特
率为2400bps fosc=18.432MHz // TL0 = 0x7F; // 定时器0初始值,延
时417us,目的是令模拟串口的波特率为2400bps fosc=18.432MHz } void WaitTF0(void) { while(!TF0); TF0=0; TH0=0xFE; // 定时器重
装初值fosc=11.0592MHz TL0=0x7F; // 定时器重装初值fosc=11.0592MHz // TH0 = 0xFD; // 定时器重装初值fosc=18.432MHz // TL0 = 0x7F; // 定时器重装初值fosc=18.432MHz } void WByte(uchar input) { //发送启始位 uchar
j=8; TR0=1; newTXD=(bit)0; WaitTF0(); //发送8位数据位
while(j--) { newTXD=(bit)(input&0x01); //先传低位WaitTF0(); input=input>>1; } //发送校验位(无) //发送结束位newTXD=(bit)1; WaitTF0(); TR0=0; } void Sendata() { for(i=0;i
TH1=0xE8 ;// Baud:2400 fosc=11.0592MHz 2400bps为从串口接收数据的速率TL1=0xE8 ;// 计数器初始值,fosc=11.0592MHz 因为TH1一直往TL1送,所以这个初值的意义不大 TH0=0xFF ;// 定时器0初始值,延时208us,目的是令模拟串口的波特率为9600bps fosc=11.0592MHz TL0=0xA0 ;// 定时器0初始值,延时208us,目的是令模拟串口的波特率为9600bps fosc=11.0592MHz #endif#ifdef F18_432 TH1=0xD8 ; // Baud:2400 fosc=18.432MHz 2400bps为从串口接收数据的速率 TL1=0xD8 ; // 计数器初始值,fosc=18.432MHz 因为TH1一直往TL1送,所以这个初值的意义不大TH0=0xFF ;// 定时器0初始值,延时104us,目的是令模拟串口的波特率为9600bps fosc=18.432MHz TL0=0x60 ;// 定时器0初始值,延时104us,目的是令模拟串口的波特率为9600bps fosc=18.432MHz #endif
IE|=0x81 ;// 中断允许总控制位EA=1;使能外部中断0 TF0=0 ; IT0=1 ;// 设置外部中断0为边沿触发方式 TR1=1 ;// 启动TIMER1,用于产生波特率} void WaitTF0(void) { while(!TF0); TF0=0 ; #ifdef F11_0592 TH0=0xFF ;// 定时器重装初值模拟串口的波特率为9600bps fosc=11.0592MHz TL0=0xA0 ;// 定时器重装初值模拟串口的波特率为9600bps fosc=11.0592MHz #endif#ifdef F18_432 TH0=0xFF ; // 定时器重装初值 fosc=18.432MHz TL0=0x60 ; // 定时器重装初值fosc=18.432MHz #endif} //接收一个字符uchar RByte() { uchar Output=0 ; uchar i=8 ; TR0=1 ; //启动Timer0 #ifdef F11_0592 TH0=0xFF ;// 定时器重装初值模拟串口的波特率为9600bps fosc=11.0592MHz TL0=0xA0 ;// 定时器重装初值模拟串口的波特率为