c51模拟串口

发布者:daasddla最新更新时间:2021-07-05 来源: eefocus关键字:c51  模拟串口  控制器 手机看文章 扫描二维码
随时随地手机看文章

在电路设计当中,经常会感觉控制器mcu的串口sci数量太少,一般mcu的sci数量不会超过3个(其实包含有3个的就是很多的了)。要想使用更多的串口sci,就得选用硬件串口uart扩展芯片或者采用软件协议利用一般的端口来模拟sci协议。利用软件模拟的方法是最廉价的设计方法。现在把c51模拟串口sci的程序提供出来,供大家享用。


/**********************************************

IO 口模拟232通讯程序,频率9600

占用定时器0

**********************************************/
#i nclude   
#i nclude   
#i nclude   
#i nclude   
#define uint unsigned int
#define uchar unsigned char
#define REN_485 P21  //为0则可以接受,否则发送
#define TIMER0_ENABLE TL0=TH0; TR0=1;
#define TIMER0_DISABLE TR0=0;
//#define F_TM F0
bit F_TM;
uchar time_count;
sbit BT_SND =P3^1;
sbit BT_REC =P3^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;

void IntTimer0() interrupt 1 using 1
{
F_TM=1;
time_count++;
}

//发送一个字符
void PSendChar(uchar inch)
{
 
  uchar ii;
  time_count=0;
  REN_485=1;
  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);
  TIMER0_DISABLE; //停止timer
}

//接收一个字符
uchar PGetChar()
{
 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;
}

//检查是不是有起始位
bit StartBitOn()
{
return (BT_REC==0);

}

void main()
{
 uchar gch;
 TMOD=0x22; //定时器1为工作模式2(8位自动重装),0为模式2(8位8位自动重装)
 PCON=00;
 TR0=0; //在发送或接收才开始使用
 TF0=0;
 TH0=0xA0;
        TL0=0xA0;
 ET0=1;
 EA=1;
 
       
 PSendChar(0x55);
 
 PSendChar(0xaa);
 PSendChar(0x00);
 PSendChar(0xff);
 
       
 while(1)
 {      
         REN_485=0;
  if(StartBitOn())
  {
  gch=PGetChar();
  PSendChar(gch);
  }
 }
}


关键字:c51  模拟串口  控制器 引用地址:c51模拟串口

上一篇:AT89S51和C51区别
下一篇:C51半双工通讯程序

推荐阅读最新更新时间:2024-10-31 11:40

Diodes 公司的同步整流控制器提供更高效率并节省电路板空间
【2018 年 2 月 27 日德国纽伦堡嵌入式电子与工业计算机应用展讯】– 为满足业界对于提高功率密度与提高效率的广泛需求,Diodes 公司推出 ZXGD3113 同步整流控制器。搭配 MOSFET 时,其配对组合可在基于反驰或谐振转换器拓扑的电源供应器中,取代高损耗的萧特基整流器。 ZXGD3113 可控制外部 MOSFET,例如 100V 16mΩ N 通道 DMT10H015LPS,配置为理想的二极管运作。以 ZXGD3113+MOSFET 取代萧特基整流器,可大幅提升以工业、消费性产品及电信市场为目标的 AC-DC 电源供应器的效率。 相较于高损耗的萧特基整流器,随着效率提升,本产品无需散热器以节省空间。此外
[电源管理]
Diodes 公司的同步整流<font color='red'>控制器</font>提供更高效率并节省电路板空间
Keil C51使用教程---开发系统基本知识(一)
Keil C51使用教程---开发系统基本知识(一) 第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 下面详细介绍Keil C51开发系统各部分功能
[单片机]
Keil <font color='red'>C51</font>使用教程---开发系统基本知识(一)
基于TC642设计的开关模式风扇速度控制器
TC642应用电路 (开关模式风扇速度控制器) TC642是一款开关模式风扇速度控制器,用于控制直流无刷风扇的速度。器件采用脉宽调制技术(PWM) 实现风扇速度与温度的正比关系。通过在VIN 输入引脚连接一个热敏电阻( 或其它电压输出温度传感器),可提供所需的1.25V 至2.65V 典型风扇的控制电压,和0% 至100%的PWM占空比。通过VMIN输入端的简单电阻分压器可设定风扇的最低转速。在上电、关断模式恢复以及瞬态故障后重启动时,片内集成的启动定时器可确保风扇电机可靠启动。在 VMIN ( 引脚3) 施加一个逻辑低电平可使风扇进入关断模式。 TC642 中采用了 Microchip Technology 的F
[嵌入式]
采用ZigBee技术实现ARM控制器与家庭智能的远程控制系统设计
随着生活节奏的不断加快,人们希望即使在工作或外出时也能及时了解家中的情况并控制家中的各种设备。各种无线通信技术的不断发展,使家庭智能系统的远程控制成为一种现实。本文结合ARM9 处理器功能强大、GPRS 技术永远在线,接入范围广,功耗低以及ZigBee 无线组网技术等优点,设计实现了一种基于嵌入式系统的无线家庭智能控制系统。 1 系统体系结构及主要功能 系统主要由家庭智能控制模块、图像处理单元、ARM 中央控制平台、ZigBee 无线传输、GPRS 无线通信和以太网通信等部分组成,其体系结构如图1 所示。 图1 系统体系结构 其中家庭智能控制模块主要包括家电控制模块、窗帘控制模块、灯光控制模块及安防控制模块。各控制模块
[单片机]
采用ZigBee技术实现ARM<font color='red'>控制器</font>与家庭智能的远程控制系统设计
USB-GPIB控制器的硬件电路设计
引 言 USB是PC体系中一套全新的工业标准,通用可编程接口GPIB(General Programmable Interface BUS),是Cy-press公司在其EZ-USB FX以及FX2系列单片机里设计的一个可由用户编程的接口,具有快速、灵活等特点;可使用多种协议完成与外围器件的无缝连接,如EIDE/ATAPI、IEEE1284、Utopia等。对其可以根据需要进行编程,且运行中不需要CPU的干预,仅通过一些CPU标志和中断与增强型8051内核通信。作为自动化测试仪器的互联标准历史悠久,使用广泛,组建费用低廉且操作方便,特别是连接台式机的时候尤其显得灵活高效。在很多对测试速度要求不高以及对测试仪器体积不作要求的情况
[应用]
keil中C51关键字code用法
keil中关键字code说明 关键字code是51单片机特有关键字,用unsigned int 或signed char等定义的变量都存储在单片机的RAM中,程序中可以随意更改这些变量的值。而运用code关键字修饰下定义的变量,比如unsigned char code i;,它们则存储在单片机程序存储空间FLASH中,节省单片机RAM资源,但在程序中不能更改这些变量的值。
[单片机]
免费软件工具让用户通过STM8微控制器开发微型智能设备
新的Cosmic CXSTM8 C编译器让免费且无限制使用的开发工具链更完善 功能丰富的编译器工具可支持STM8全系产品,包括存储容量最高128KB的产品,对代码量不设任何限制 STM8S-DISCOVERY硬件开发工具使设计项目启动资金降至8美元 中国,2016年5月10日 横跨多重电子应用领域、全球领先的半导体供应商意法半导体 (STMicroelectronics,简称ST;纽约证券交易所代码:STM)进一步扩大其深受市场欢迎的STM8微控制器的选择范围,支持智能装置设计人员选用STM8微控制器开发方便现代工作生活的经济型计算任务。 意法半导体与Cosmic的最新合作代表包括开发、调试、优调STM
[物联网]
免费软件工具让用户通过STM8微<font color='red'>控制器</font>开发微型智能设备
基于ARM的某机载电台检测控制器的设计
机载电台担负着空空和地空之间通信,为保证电台性能,需要对其进行定检。基于单片机的检测仪存在测量速度慢、可扩展性差的问题;而基于PXI仪器或VXI仪器的检测仪存在着功耗大、体积大、价格高等缺点。为解决上述问题,利用基于ARM处理器来实现电台检测控制器成为重要的发展方向,ARM是一种高性能、低功耗的RISC结构处理器,由于其出色的性能被广泛应用于工业控制、无线通讯、成像和安全、网络应用等方面,采用基于ARM的电台检测控制器具有可移植性强、可扩展性好、抗干扰能力强等优点。   1 硬件设计   良好的硬件设计是是解决基于单片机、PXI、VXI等系统的电台检测仪问题的关键。为实现硬件结构的模块化设计,硬件主要分为两大部分:主控制器电路
[工业控制]
基于ARM的某机载电台检测<font color='red'>控制器</font>的设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved