STC89S52RC模拟串口
来源:互联网 发布:掌上电力显示网络问题 编辑:程序博客网 时间:2024/06/05 17:21
我们使用的是P1^4口做发送引脚,P1^5口做接受引脚
auart.h
#include "head.h"#define MODE_QUICK#define F_TM F0#define TIMER0_ENABLE TL0=TH0; TR0=1;#define TIMER0_DISABLE TR0=0;sbit ACC0= ACC^0;sbit ACC1= ACC^1;sbit ACC2= ACC^2;sbit ACC3= ACC^3;sbit ACC4= ACC^4;sbit ACC5= ACC^5;sbit ACC6= ACC^6;sbit ACC7= ACC^7;sbit BT_SND =P1^4;sbit BT_REC =P1^5;#ifndef _AUART_H_#define _AUART_H_//函数声明void PSendChar(uchar inch);uchar PGetChar(void);bit StartBitOn(void);#endif
auart.c
#include "auart.h"#include "timer.h"//发送一个字符void PSendChar(uchar inch){ #ifdef MODE_QUICK ACC=inch; F_TM=0; BT_SND=0; //start bit TIMER0_ENABLE; //启动 while(!F_TM); BT_SND=ACC0; //先送出低位 F_TM=0; while(!F_TM); BT_SND=ACC1; F_TM=0; while(!F_TM); BT_SND=ACC2; F_TM=0; while(!F_TM); BT_SND=ACC3; F_TM=0; while(!F_TM); BT_SND=ACC4; F_TM=0; while(!F_TM); BT_SND=ACC5; F_TM=0; while(!F_TM); BT_SND=ACC6; F_TM=0; while(!F_TM); BT_SND=ACC7; F_TM=0; while(!F_TM); BT_SND=1; F_TM=0; while(!F_TM); TIMER0_DISABLE; //停止timer #else uchar ii; ii=0; F_TM=0; BT_SND=0; //start bit TIMER0_ENABLE; //启动 while(!F_TM); while(ii<8) { if(inch&1) { BT_SND=1; } else { BT_SND=0; } F_TM=0; while(!F_TM); ii++; inch>>=1; } BT_SND=1; F_TM=0; while(!F_TM); #endif TIMER0_DISABLE; //停止timer}//检查是不是有起始位bit StartBitOn(){ return (BT_REC==0);}//接收一个字符uchar PGetChar(){ #ifdef MODE_QUICK TIMER0_ENABLE; F_TM=0; while(!F_TM); //等过起始位 ACC0=BT_REC; TL0=TH0; F_TM=0; while(!F_TM); ACC1=BT_REC; F_TM=0; while(!F_TM); ACC2=BT_REC; F_TM=0; while(!F_TM); ACC3=BT_REC; F_TM=0; while(!F_TM); ACC4=BT_REC; F_TM=0; while(!F_TM); ACC5=BT_REC; F_TM=0; while(!F_TM); ACC6=BT_REC; F_TM=0; while(!F_TM); ACC7=BT_REC; F_TM=0; while(!F_TM) { if(BT_REC) { break; } } TIMER0_DISABLE; //停止timer return ACC; #else uchar rch,ii; TIMER0_ENABLE; F_TM=0; ii=0; rch=0; while(!F_TM); //等过起始位 while(ii<8) { rch>>=1; if(BT_REC) { rch|=0x80; } ii++; F_TM=0; while(!F_TM); } F_TM=0; while(!F_TM) { if(BT_REC) { break; } } TIMER0_DISABLE; //停止timer return rch; #endif}
0 0
- STC89S52RC模拟串口
- 模拟串口
- 红外模拟串口
- keil 串口 模拟 调试
- io 模拟串口
- C# 串口模拟键盘输入
- STM8 模拟串口程序
- STM32模拟串口-ucosiii
- 软件模拟串口通信
- 模拟串口实现方案
- esp8266 GPIO模拟串口
- C++串口操作以及串口模拟测试
- Android 通过串口模拟 模拟物理按键
- Android 通过串口模拟 模拟物理按键
- ARM7 LPC2136的模拟串口
- I/O 模拟串口通信
- QT串口模拟-基本界面
- 使用串口模拟工具进行串口程序开发调试
- MongoDB 运行状态、性能监控,分析
- 二叉树C++实现
- SSH生命周期图
- Chronometer控件的使用
- Java 导出txt文件
- STC89S52RC模拟串口
- MAVEN搭建SpirngMVC和Spirng所需的依赖包
- org.mockito.exceptions.misusing.UnfinishedStubbingException
- ListCollectionView.Refresh issue
- 【keil配置,备查】STM32开发环境(工具)之Keil MDK 介绍
- Python中用eval将字符串转换为字典时候出错:NameError: name ‘null’ is not defined的解决方法
- IOS常用第三方框架 --- MBProgressHUD 提示效果
- ASCII编码和UNICODE编码转换
- Java开发环境搭建(一环境变量)