历史上的今天
返回首页

历史上的今天

今天是:2025年06月09日(星期一)

正在发生

2018年06月09日 | c51单片机上的发送中断标志位

2018-06-09 来源:eefocus

对于一些大多数单片机,他有一个专门的标志位来给串口的发送或接受数据做判断。


比如c51中,TIx和RIx。


TIx标识数据缓冲区的数据是否发送完毕,TIx = 1,表示发送完毕,TIx= 0,表示还没发送结束。


所以一个很简单的发送程序:


for(i=0;i

{  

    while(!TI0);  

    TI0=0;  

    SBUF0 = s_data[i];        

}  


像上面程序这样来发送数据。

但是,上面程序有可能出现问题,有时你会发现单片机一直发送不了数据,或发送的数据有些问题。


断点调试下你就会发现,单片机不发送数据的原因就是一直停留在while(!TI0)语句中。还好只是这样,如果是复杂的应用,导致数据错位或其他的,要找到原因还真麻烦啊。


问题原因很简单,就是如果程序在这之前没通过串口发送过数据呢?


比如下面的初始化:


void UART0_Init()  

{  

    unsigned char SFRPAGE_SAVE = SFRPAGE;  

  

    SFRPAGE = UART0_PAGE;  

    SCON0   = 0x50;         // SCON0: mode 1, 8-bit UART, enable RX  

    SSTA0   = 0x15;  

    SFRPAGE = TMR2_PAGE;  

    TMR2CN  = 0x00;  

    TMR2CF  = 0x08;  

    RCAP2L   = (-((unsigned int)(SYSCLK / BAUDRATE) >> 4 ));  

    RCAP2H    = (-((unsigned int)(SYSCLK / BAUDRATE) >> 4 )>>8);  

    TMR2L    = RCAP2L;  

    TMR2H    = RCAP2H;  

    TR2     = 1;  

    SFRPAGE = SFRPAGE_SAVE;  

}  

看起来都没问题,但是,TI呢?

TI默认0,没错,因为压根没发送数据,哪有发送完成。可巧好我们需要的条件是发送完成...


于是,很简单:



for(i=0;i

{  

    while(!TI0);  

    TI0=0;  

    SBUF0 = s_data[i];        

}  


推荐阅读

史海拾趣

Harwin公司的发展小趣事

Harbour Industries成立于1965年,起初主要专注于电缆的生产与销售。在20世纪60年代末和70年代初期,随着全球航空航天市场的迅速增长,Harbour敏锐地捕捉到了这一机遇。为了服务这一市场,公司进行了大规模的工厂扩建,并引入了先进的生产设备和技术。这一举措不仅提升了公司的产能,还确保了产品质量能够满足航空领域的高标准。通过不懈努力,Harbour逐渐在航空电缆市场中占据了一席之地。

Helicomm公司的发展小趣事

Harbour Industries始终将产品质量视为企业的生命线。为了确保产品质量达到国际一流水平,公司不断引入先进的质量管理体系。1990年代末期,Harbour成功通过了ISO9001产品质量认证。这一认证不仅标志着公司的质量管理体系已经达到了国际标准,也为其在全球市场中的竞争提供了有力保障。此外,Harbour还实行了“过程管理”来确定和控制产品成本,进一步提升了其市场竞争力和盈利能力。

Acutechnology公司的发展小趣事

Acutechnology公司自XXXX年创立之初,便专注于电子技术的研发与创新。创始团队由一群富有经验的电子工程师组成,他们对市场趋势有着敏锐的洞察力。在初创期,公司集中资源投入到一项具有前瞻性的技术研发项目中,经过多次试验和改进,最终成功开发出了一款具有竞争力的电子产品,为公司的后续发展奠定了坚实的技术基础。

芯佰微(Corebai)公司的发展小趣事

随着技术的不断发展,芯佰微逐步拓展了自己的产品线,覆盖了放大器、接口电路、电源管理、时间数字转换器、DAC数模转换、ADC模数转换等多个领域。同时,公司积极开拓国内外市场,与众多知名企业建立了合作关系,将产品广泛应用于手持移动终端、消费类电子产品、个人电脑及周边设备、网络通信设备、医疗设备、办公设备等多个领域。这些努力使得芯佰微的产品在市场上获得了广泛认可。

Cicoil公司的发展小趣事

随着公司业务的不断拓展,Cicoil开始与大型计算机制造商IBM展开合作。他们为IBM的大型计算机提供定制的扁平电缆解决方案,以其出色的性能和可靠性赢得了IBM的信任。这一合作不仅提升了Cicoil在业界的地位,也为其带来了稳定的业务增长和更广阔的发展空间。

G-Link Technology公司的发展小趣事

为了进一步扩大市场份额,蜂鸟无线积极实施国际化战略。公司先后在亚洲、欧洲和北美等多个地区设立了研发中心和销售网络,以更好地服务全球客户。在国际化过程中,蜂鸟无线注重与当地企业和政府机构的合作,共同推动无线通信技术的发展和应用。通过参与国际展会、举办技术交流会等活动,蜂鸟无线不仅提升了品牌知名度,还成功吸引了众多国际合作伙伴,为公司的全球化发展奠定了坚实基础。

问答坊 | AI 解惑

大家用什么单片机

讨论下,大家都学过哪些单片机,用过哪些单片机。有何感想。 我是新手,只会51单片机,觉得51不好,功耗太大,对外电路的干扰也很大。 ATMEL 的 89S51系列 MICROCHIP 的PIC单片机 ATMEL 的 AVR TI 的 MSP340系列 等等 我最近想弄弄AVR和MSP3 ...…

查看全部问答>

流水线(Pipeline)简介

  网上找到的资料,感觉不错,与大家分享下     流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。目的是提高数据吞吐率(提高处理速度)。        流水线缩短了在 ...…

查看全部问答>

TI公司内部资料

本帖最后由 dontium 于 2015-1-23 13:10 编辑 根据需要下载。不像压缩包那样没谱。 …

查看全部问答>

Windows Embedded工控——机器人也疯狂

  比尔盖茨曾说过机器人的发展就像当年PC的发展一样,会影响改变人们的生活和工作,如同现在计算机网络,让人们寸步不离。其实机器人的智能完全依靠高速CPU,大容量存储,要想灵活独立运动,最好使用微软的嵌入式系统;当然,如果机器人根本不打 ...…

查看全部问答>

螺旋机旋转声音异常,大家说说是什么原因?

接到医院的电话,说是在扫描时有异常的声音发出,究其原因: 1、皮带噪音? 2、轴承噪音?…

查看全部问答>

报警与对讲系统应整合或独立?

对讲与警报这两个原本各自运作的系统,近年来掀起一股“合而为一”的趋势。原因为何?在整合或独立之间,到底各有哪些优缺点?该如何选择?可视对讲与警报系统,过去是两个完全独立的系统,甚至在全球大部分市场,仍是如此。然而在亚洲市场上,中国 ...…

查看全部问答>

pic单片机求救????????????????????

我 现在需要用PIC24FJ16GA002的 flash 来模拟EEPROM,可是在用到TBLRDL 和TBLWRL这两条指令的 时候,编译系统提示说它俩没定义,我是 用C语言做的,这两个指令在C里边 能直接用不 ? 谢谢 看从网络上找到的 例程中就是直接用的啊 ,可我 拿来直接 ...…

查看全部问答>

EEWORLD的Blog如何上传附件?

咨询一下,EEWORLD的Blog如何上传附件?…

查看全部问答>

自己做的STM32F103ZE开发板,支持网卡和USBHost.提供原理图下载

安富莱STM32F103ZE-EK开发板原理图.pdf (151.98 KB) 下载次数: 762 2009-10-12 21:28 安富莱STM32F103ZE-EK开发板用户手册(V1.0).pdf (1.14 MB) 下载次数: 751 2009-10-13 10:08 硬件资源: ■8M晶振作 ...…

查看全部问答>

新手问一下pwm控制电机的问题

小弟最近在造循迹小车 关于电机控制的问题想问一下大家 首先红外线探头输入单片机的形式有 高低电平 和 脉冲的形式,那么用pwm控制电机是不是在这两种情况下都适合用 还是只能用在红外线输入脉冲的情况下. 还有个人感觉pwm好像很难学(本人之前没学 ...…

查看全部问答>