单片机串口程序

发布者:csZhou最新更新时间:2013-02-21 来源: 51hei关键字:单片机  串口程序  中断方式 手机看文章 扫描二维码
随时随地手机看文章

51单片机串口调试程序一列

/*定义为中断方式串口处理*/
#define INTERSENDSTR
/*不为8032系列芯片 */
//#define CHIP_8032

#include
#include
#include
#include "err.h"


#ifdef INTERSENDSTR
unsigned char xdata sSendComBuf[256],sRecComBuf[256];
unsigned char data bOut,bIn,bSout,bSin;
#else
#define DEFSENDCHAR TI=0;SBUF=ACC;while(!TI);TI=0;
#endif
//bps设置 9600就是 PSetBps(96)(11.0592Mhz)

unsigned char PSetBps(unsigned int bps) SMALL
{
unsigned int t1;
unsigned char t2;
#ifdef INTERSENDSTR
/*如果使用中断方式发送数据,必须等待串口发送数据完毕才能更换波特率 */
while(bSin!=bSout)
{
;
}
ES=0;
#endif

#ifdef CHIP_8032
if(3456%bps)
{
return ERR_SET_BPS;
}
t1=3456/bps;
t1--;t1=~t1;
RCAP2H=t1/256;RCAP2L=t1;
T2MOD=0x00;
/*使用定时器2做波特率发生器 */
T2CON=0x34;/*TF2=0;EXF2=0;RCLK=1;TCLK=1;EXEN2=0;TR2=1;C/T2=0;CP/RL2=0
*/
#else
t1=576/bps;
if((576%bps)||((t1==0))||(t1>=2*256))
{
return ERR_SET_BPS;
}
if(t1>256)
{
PCON=00;
t2=256-(288/bps);
}
else
{
PCON=0x80;
t2=256-t1;
}
TH1=t2;TL1=t2;
TR1=1;
#endif
/*模式3*/
SM0=0;
RI=0;TI=0;
REN=1;
SM1=1;
SM2=1;
#ifdef INTERSENDSTR
bOut=bIn;
bSout=bSin;
ES=1;
#endif
return OK;
}
void PSendChar(unsigned char ch) SMALL
{

#ifdef INTERSENDSTR
unsigned char tch;

tch=bSin+1;
while(tch==bSout)
{
;
}
sSendComBuf[bSin]=ch;
ES=0;
if((bSout==bSin))
{
SBUF=sSendComBuf[bSin];
bSin++;
}
else
{
bSin++;
}
ES=1;
#else
ACC=ch;
DEFSENDCHAR;
#endif
}
unsigned char PGetChar() SMALL
{
unsigned char ch;
#ifdef INTERSENDSTR
ch=sRecComBuf[bOut];
bOut++;
return ch;
#else
ch=SBUF;
RI=0;
#endif
}
bit PCharInCom() SMALL
{
#ifdef INTERSENDSTR
if(bIn!=bOut)
{
return 1;
}
return 0;
#else
return RI;
#endif
}
void PSendString(unsigned char *st) SMALL
{
while(*st)
{
PSendChar(*st);
st++;
}
}
void PSendArray(unsigned char *st,unsigned int len) SMALL
{
unsigned int ii;
for(ii=0;ii{
PSendChar(st[ii]);
}
}
#ifdef INTERSENDSTR
void PSerialInt() interrupt 4
{
if(RI)
{
sRecComBuf[bIn]=SBUF;
bIn++;
RI=0;
}
if(TI)
{
TI=0;
if(bSout!=bSin)
{
bSout++;
}
if(bSout!=bSin)
{
SBUF=sSendComBuf[bSout];
}
}
}
#endif

关键字:单片机  串口程序  中断方式 引用地址:单片机串口程序

上一篇:单片机IC卡读写器设计
下一篇:基于51单片机设计的电话遥控器

推荐阅读最新更新时间:2024-03-16 13:18

基于PC的数字电压表设计
  数字电压表的设计和开发,已经有多种类型和款式。传统的数字电压表各有特点,它们适合在现场做手工测量,要完成远程测量并要对测量数据做进一步分析处理,传统数字电压表是无法完成的。然而基于PC通信的数字电压表,既可以完成测量数据的传递,又可借助PC,做测量数据的处理。所以这种类型的数字电压表无论在功能和实际应用上,都具有传统数字电压表无法比拟的特点,这使得它的开发和应用具有良好的前景。 新型数字电压表的整机设计   该新型数字电压表测量电压类型是直流,测量范围是-5~+5V。整机电路包括:数据采集电路的单片机最小化设计、单片机与PC接口电路、单片机时钟电路、复位电路等。下位机采用AT89S51芯片,A/D转换采用AD678芯片。通
[应用]
基于AT89C2051单片机和GPS技术实现机器人定位模块的设计
1 引言 定位是根据先验的环境信息,结合当前的机器人位置信息以及传感器输入信息,准确地确定机器人位姿的过程。可靠定位是移动机器人研究中备受关注和富有挑战性的一个重要研究主题。 机器人定位技术可分为绝对定位和相对定位技术两类,绝对定位主要采用导航信标、主动或被动标识、地图匹配或卫星导航技术(GPS) 进行定位。相对定位是通过测量机器人相对于初始位置的距离和方向来确定机器人的当前位置,通常也称为测程法。绝对定位和相对定位各有优缺点,具有互补性,将两者结合能形成更加准确可靠的定位系统。本实验模块的设计就是先用测程法进行相对定位,然后利用电子罗盘进行纠正。 2 定位原理及硬件设计 2.1定位原理 本设计对应的机器人是前后轮独立驱动的,
[单片机]
基于AT89C2051<font color='red'>单片机</font>和GPS技术实现机器人定位模块的设计
STC单片机PCA产生PWM程序
stc12 15单片机的pca模块产生pwm的完整例程,测试成功。完整代码下载: http://www.51hei.com/f/stcpcaPWM.zip #include reg51.h #include "PCA.h" void PWM(unsigned int num,int cex); void main() { CMOD=0x02; CL=0x00; CH=0x00; PWM(10,0); PWM(20,1); PWM(50,2); PWM(70,3); PWM(90,4); CR=1; while(1); } void PWM(unsigned int num,int cex) { double i=256*(1
[单片机]
8051单片机指令系统按功能可分为几类?具有几种寻址方式
MCS-51单片机 指令 系统按功能可分为5类: (1)数据传送指令  (2)算术运算指令   (3)逻辑运算和移位指令   (4)控制转移指令 (5)位操作指令 MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表: 立即寻址 程序存储器 直接寻址 内部RAM低128个字节; 特殊功能寄存器SFR 寄存器寻址 R0~R7;A、B、DPTR、C 寄存器间接寻址 @R0、@R1、SP 内部RAM、堆栈指针SP @R0、@R1、@DPTR 外部RAM 变址寻址 @A+PC、@A+DPTR 程序存储器 相对寻址 P
[单片机]
STM32单片机寄存器的功能解析
“大神”叫你先上STM32,51是小朋友玩的,所以你就不学51了 初学者建议从51单片机开始,虽然很多人建议直接上STM32,但本人还是建议先学习51单片机,简单且不容易打消积极性,很多人都是在积极性消退之后就会半途而废,等熟悉了LED、串口、SPI、按键、中断、IIC等这些基础之后,如果对单片机还有兴趣,不妨再去晋升学习STM32单片机,有了51单片机作为基础,这时候学习STM32也是可以非常快的就能上手。 一般的寄存器的定制是从0开始定义,0000这个寄存器地址存放的是温度的一个数据,然后0001这个采用的是湿度的数据,它们两个数据的范围都是0到65535,并且都是只读的,所以它适用于的是03这个功能,组态地址就不用关心了
[单片机]
STM32<font color='red'>单片机</font>寄存器的功能解析
MCU能不能像手机/多媒体处理器一样崛起?
2009年中国MCU市场的销量约为20亿美元,约占中国半导体销量的30%,厂商约有100多家。然而,一个令人遗憾的现实是,除了在低端的8位MCU市场可以看到排名第八的凌阳与排名第十的华邦外,中端16位市场和高端32位市场的前十大供应商几乎看不到“中国芯”的影子。这与另两个同样是嵌入式应用的市场——手机与多媒体处理器市场形成宣明的对比:手机领域联发科和展讯主导了中国的GSM/TD手机市场,而在多媒体处理器市场,以瑞芯微、中星微、炬力、君正、杨智、凌阳、全胜、华芯飞等形成的强大的“中国芯”阵营基本上统治着中国本土的多媒体处理器市场。    从市场特性来看,MCU的用户群比多媒体处理器和手机芯片的用户群要明显分散些,因而在这类
[单片机]
ht46f49e单片机外部电路和端口的体系结构讲解
通过 单片机 简介中单片机功能简述的学习,我们了解到单片机的核心功能可以描述为:能够按照预先设定的功能,依次执行某种操作。这些操作或者向外输送某种控制信息,或者获取某种外部信息,或者进行某种逻辑判断或计算。此外, 单片机 还具有定时器、外部中断等功能,辅助完成复杂的控制过程。 单片机之所以能够完成各种控制功能是和其内部的体系结构设计分不开的。本文将以ht46f49e为例,介绍单片机外部和内部的体系结构。 1.电源电路 电源引脚,包括VDD和VSS,其直流工作电压范围为2.2~5.5V。在电路图中约定和供电相关的符号包括: VCC:C=circuit 表示电路的意思, 即接入电路的电压; VDD:D=device 表示器件的意思
[电源管理]
ht46f49e<font color='red'>单片机</font>外部电路和端口的体系结构讲解
我对单片机职业规划的几点看法
这几天看了很多关于“类似单片机的出路”的帖子,就觉得大家有点悲观了。首先,单片机不是万能的,但没有单片机那是万万不能的。从NN年前的单片机,到现在的单片机,单片机只是单片机,其性质并没有太多的改变。只是从原来的“神秘”、“暴利”、“有趣”等等,回归了她原来的真是面目罢了--那只是在说明社会在进步,更加的合理和趋于理性。只是现在的这样回归,有点走了极端罢了,从一个极端走了另一个极端罢了。但相反社会在这方面的需求却是越来越大,至少在我们的有生之年,这样的“自动化”过程一直会贯穿下去。所以你有什么好担心的,怕自己没有用武之地吗?! 怕自己的资薪没有或不高吗?! 我自己在单片机和自己熟悉的行业上做了快10年了,不说自己的水平怎么样。说牛
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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