导航:首页 > 操作系统 > 单片机ti不置位

单片机ti不置位

发布时间:2022-10-20 22:41:12

A. 单片机通信为啥TI不置位哪位大侠帮忙我请客啊多谢

修改了一下,试了试接收OK。

PS:还有就是主程序里不要加RET,没有LCALL及入栈指令就RET弹出堆栈指针 会让再往下的系统错乱,虽然这个并不是你这个程序的症结所在。

org 0000H

AJMP MAIN;转入主程序

org 0030H


MAIN:

LCALL DELAY100MS ;开机稳定延时


MOV SCON,#50H;设置成串口1方式

MOV TMOD,#20H;波特率发生器T1工作在模式2上

MOV PCON,#80H;波特率翻倍为2400x2=4800BPS

MOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值)

MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值)

SETB TR1;启动定时器T1

MOV A,#0AFH;将16进制的字符AF发送到串口去

MOV SBUF,A;将遥控器键值通过串口发送出去

g:JNB Ti,g;发送之后要判断Ti位是否置1,置1了才表示发送完成,然后用软件置0,否则只收到一次。

LCALL DELAY100MS ;发送分隔延时

MOV SBUF,A;将遥控器键值通过串口发送出去

CLR Ti

SJMP $ ;停止

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DELAY100MS: ;@12.000MHz

PUSH 30H

PUSH 31H

MOV 30H,#195

MOV 31H,#133

NEXT:DJNZ 31H,NEXT

DJNZ 30H,NEXT

POP 31H

POP 30H

RET

end

B. C51单片机,串口设置后TI置1

TI 貌似不能写1,是由硬件置1,软件清零的。写1无效。
当串口发送完一个字节后,就会置1。如果开了中断,就会进入中断程序。如果不清零,就会不停地进入中断。

C. 51单片机发送字节,是把一个字节写入到subf,就会把ti置1,为什么又要把ti再置回0再开ES=1呢

单片机通过串口向外发送一个字节的数据结束后,就会将TI置1,表示发送完了,如果是开中断的话,就会产生中断,在中断子程序中继续发送下一个字节。因这次已经响应了,就应该把TI清0,表示这一次的中断已响应了,如果不清0,就会再次产生中断的,一次发送引起两次或者多次中断,就错误了。所以,一次中断后必须将本次的标志位TI清0,TI是一次有效。如果是查询方式,把要发送的数据写到SUBF后就要查询TI的状态了,当TI=1,就说明这次发送结束了,也必须将TI清0,再发送下一个字节。
在中断子程序中,通常是首先就将TI清0,而中断程序结束后再开ES=1,假如这个顺序反过了,也是可以的,只要在中断子程序中将TI清0就行,至于是否将再开ES=1,要看在中断子程序中的前面关了ES=0,从中断返回后就要开ES=1。其实这一关一开,在中断子程序中没有什么必要,如果不关,也就不用再开了,虽然没有关,在响应串口中断时也不会再响应串口中断,必须从中断返回后才能再次响应的。这只是一些人的习惯了这么写,也没有关系,只要不被误导就好。
如果是单片机接收数据,当接收到一个字节后,就会将RI置1,或者引起中断,从SBUF中读出数据,或者查询RI,再读数据。通常是采用中断的方式接收数据,这样不影响单片机执行其它程序,也不至于因为等待接收数据造成死机。

D. 我用的c8051f020,想通过串口通信向外发送一字符。但给SBUF0赋值后TI0不置位,跪求解决方法!

while(TI0==0); 这里多了一个分号 如果TI0=0的0的话就会一直循环

E. 51单片机RI和TI都是什么时候置位的,软件置位还是硬件置位

置位,就是写1,是硬件;当满足条件时,自动写1了。
清零是软件。

F. 在51单片机中,RI和TI为什么一定要用软件置零,无法用硬件置零。而其他的要要用硬件置零无法用软件置零

不是无法用硬件置零,而是硬件根本就不对RI和TI置零。
其它的,是在进入中断时,硬件就自动置零了,用软件也可以置零,但是肯定是晚了一步。

G. 单片机中的置位和清零分别是什么意思

单片机内部有各种功能的寄存器,比如PIC,C51系列8位的单片机,寄存器的宽度就是八个二进制位,一般是高位在前低位在后,例如:11000011,一共是八位,高四位数据是1100,低四位数据是0011。单片机是可以进行位操作的,一个8位的寄存器我们可以只针对其中一个位或者某些位进行操作,将寄存器相应的位赋值1(高电平)为置位,相反赋值0(低电平)为清零。...
例如c51:
置位指令:SETB,举例:SETB P3.7 ;执行过后P3.7输出为高电平
清零指令 CLR,举例:CLR P3.7 ;执行过后P3.7输出为低电平,这些操作均不影响其它的位。
以上是通过软件来实现的,有的特殊功能寄存器就可能是由硬件自动实现的,比如一些标志位,有些是具有只读属性,用于供程序提供参考。

H. 51单片机串口自收发,产生中断时TI是先于RI置位吗为什么

TI发送完数据就置位。数据位发送完,还要继续发停止位,一般是1个位的1。
接收时收到停止位才能算接收完,RI才有可能置位(某些型号的单片机还有可能要进一步识别错误,如果接收出错,有可能不置位RI)。

I. 发送数据后为什么TI不置1

{
if(TI == 1)
TI=0;
else
{ a=SBUF;
if(a=='X')
{ b=0; /*我调试了,灯没有亮,说明程序没有进来*/
flag=1;
RI=0;
}
}
}
该程序不管是单片机接收字符,还是发送字符都会进入中断。
-------------------
该程序收到干扰,也会进入中断。
但是如果收到的不是'X',就不会清除RI,退出后,RI仍然是1,是不是马上又要进入中断?
是不是永远在主程序、中断中间徘徊?
--
另外,发送时,应该等待一个字节发送完毕,再发送下一个,不可不间断的发送。。

阅读全文

与单片机ti不置位相关的资料

热点内容
mdk编译后目标文件 浏览:613
老人动手解压 浏览:720
小米sd卡解压 浏览:996
程序员那么可爱陆漓替老袁说情 浏览:28
当女程序员遇见问题 浏览:746
32位编译器什么意思 浏览:355
php多参数函数 浏览:17
通达信板块动作源码 浏览:751
matlab完全自学一本通pdf 浏览:250
php源码本地安装 浏览:961
服务器怎么用不会断电 浏览:301
主从服务器有什么用 浏览:213
jstlpdf 浏览:15
安卓原神在哪个app下载 浏览:808
单片机编程技术什么意思 浏览:104
e点课堂源码 浏览:46
免费打击垫app哪个好 浏览:532
程序员必装的6款软件 浏览:750
基于单片机的遥控器设计 浏览:521
安卓如何取消圆图标 浏览:11