⑴ C51单片机动态显示秒分时
兄弟,我粗粗看了一下,问题的确在定时器上。
先告诉你怎么解决吧:
if(TF0==1)
{
//加上以下几句
TF0=0;
TH0=(65536-20000)/256;//
TL0=(65536-20000)%256;//定时20ms
………你自己的程序……
buffer[4]=hour%10;
buffer[5]=hour/10;
}
如果你的定时器初始值TH0,TL0没有计算错的话应该正常了。
你的原因在:方式1定时器溢出之后TF0是需要手动清零的。因为你没有清0,所以if(TF0==1)这个判断一直成立,定时器当然没有用了。
再者,方式1定时器溢出之后TH0,TL0会自动清零,如果需要定时器继续按方式1工作下去,应该再给TH0,TL0重新赋初值或定时时间常数。
最后有个建议,
TH0=(65536-20000)/256;//
TL0=(65536-20000)%256;//定时20ms
这两个TH0,TL0定时常数赋值还是你自己直接算一下写进去好了,反正是个常数。单片机计算上面两个式子很累的啊,特别是这里的除法,取余运算。
⑵ 如何在单片机系统中加入分时程序
这个问题很简单,因为循环左移和循环右移并不相互排斥,可以单独存在,不仅仅在一个工程中,在用一个文件或者同一个程序段中都是可以的。比如。 #include<reg51.h> #include<intrins.h> void delay(int a) { int i,j; for(i=0;i<a;i++) for(j=0;j<110;j++); } main() { unsigned char led1=0xfe,led2=0x7f; while(1) { P0=_crol_(led1); P1=_cror_(led2); delay(100); } }
⑶ 求助:51单片机如何实现两个串口分时复用的
是一个单片机,要接成两个串口吗?
那只好用一个模拟开关,来切换两个串口。但实际上是一个串口,需要单片机分时来使用两个串口。这需要有严格的通信协议,编写程序要按这个协议,否则,两个串口在时间上会出现冲突,或不能正常通信,或丢失数据。
STC单片机,就有这种类型的,外部引脚是两个串口,即两组RXD,TXD引脚。内部还是一个UART,但两个串口的切换是在内部完成的,外部用起来就方便多了。
STC单片机还有内部有两个独立串口的,这样,用起来就省事多了,两个独立串口,互相不影响。
⑷ 51单片机P0口分时复用原理是什么啊急需解答啊
下图为采用74LS244作为扩展输入、74LS273作为扩展输出的简单I/O口扩展。
1:74LS244为8缓冲线驱动器(三态输出),为低电平有效的使能端。即G1G2低电平是数据输入单片机,G1G2高电平时244输出为高阻态。
2:74LS273为8D触发器,为低电平有效的清除端。当为0时,输出全为0且与其它输入端无关;CP端是时钟信号,当CP由低电平向高电平跳变时刻,D端输入数据传送到Q输出端。
3:图中74ls273可以换成74ls373、74ls573等锁存器,这样就就不必利用脉冲来输出数据,373的LE端为低时输出跟随输入变化,为1是输出口锁存。
4:你还可以对图稍加改动,WRRDP2.0就只要一个就可以了,或者用一个反相器只需要一个IO口来作为控制端就好了。若还闲这样扩展不够用,可用两片373扩展输出,两片244扩展输入。
5:51单片机选用这些74系列芯片是ls和hc都可以用。但若你用3.3V的久必须用HC系列的74芯片了。
我有个我实际利用的例子,需要的话可以联系我
⑸ 80c51单片机p0口地址数据分时复用如何实现的
P0在前一个时刻输出地址的低8位,然后由ALE信号将它们锁存到外面的逻辑芯片(例如74LS245之类)里,之后再从P0输出或输入数据,就实现了分时复用。
在这两个期间,地址的高8位,也就是P2口的信号是不变的,并且ALE在后一半的时候也是不变的。这样的话,之前输出的地址低8位被ALE锁存到外面的逻辑芯片里了。
因此不管总线上的信号如何变,只要ALE不变,那么逻辑芯片的输出就是不变的,因此此时的P0口就可以执行别的任务了。
(5)单片机分时扩展阅读:
单片机的分时复用:
首先,具有分时复用的端口只有P0口,而在使用分时复用功能时,是只对单片机访问外部存储器的时候来说的,其他时候都是普通IO口。
单片机在访问外部存储器的时候,P0口首先是作为低8位的地址数据线输出地址信号,外接锁存器。然后,74LS373或者245一类的锁存器将其锁存后,P0口再输出数据或者是写入数据。
这个就是P0口的双向8位数据口和低8位地址输出口的复用,分时就是先地址后数据。
⑹ 单片机的分时复用是如何实现的
P0=0x00; P0=0xff;这样在第一个周期中P0全为低电平,在第二个周期中全为高电平,分时复用了。 1楼正确。使用373活着是573一类的芯片。
⑺ 单片机何为分时复用
就是在不同的时间做不同的事。
比如检测按键的IO口,要以在不检测时刷新屏幕显示。同一个IO口,既做了按键检测,又做了显示的功能。这个就是分时复用。
⑻ 51单片机的分时复用
51单片机的分时复用51单片机的分时复用功能,最直接的就是MOVX指令,用这个指令就是在分时复用P0口,执行:MOVX A,@DPTR,那么首先要送地址A0~A7给P0口,ALE有效,锁存在373上,再将这个地址的数据从P0口读入传给A。
⑼ 一个51单片机定时器怎样分时工作
什么意思啊?你的意思是不是用一个定时器设定n个定时啊,很简单的啊,把定时器定成单位时间,需要几个单位时间就几倍的单位时间啊