求高手解释一下51单片机特殊功能寄存器的有关问题。

2019-07-15 16:10发布

因为实在搞不懂,所以可能问的都不太清楚,请各位见谅。   
就比如说在写C程序要用到定时器和中断的时候,要写到TMOD、TCON、TR1、T0等等....首先这里面的TMOD我在网上看到内部结构是有8位的,那TMOD到底是单片机上的一个I/O口还是像
P1、P2那样是8个I/O口?如果只是一个I/O口,那为什么它内部的各个位还能单独赋值?


为了更好说明,下面是一部分代码:
        TMOD=0x11;//设置定时器0为工作方式1
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        TH1=(65536-20000)/256;
        TL1=(65536-20000)%256;
        EA=1;//开总中断
        ET0=1;//开定时器0中断
        ET1=1;
        TR0=1;//启动定时器0
        TR1=1;

好像我在看80C51单片机资料的时候引脚图上也没这些符号....

另外一个问题是:如果要用定时/计数器,中断啥的,那在硬件电路上有什么要求呢?比如我现在有个最小系统,芯片是stc89c52rc,在P1口接了几个灯,想用定时器实现灯以一秒间隔流动,需要在原来板子基础上怎么改?
89c52.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
zjbhello
1楼-- · 2019-07-15 16:51
 精彩回答 2  元偷偷看……
mmzrzcg
2楼-- · 2019-07-15 22:09
//我来答,楼主好奇心还是蛮强的嘛。很爱思考嘛!
//以下我的思考,个人观点仅供参考

1、其实所有单片机内核都可以看成是一个存储器,对的你没看错就是存储器,只是就是存放代码的,0、1。
2、当然只是存起来并没有什么卵用,单片机还做了一件事,把0/1代码变成我们预先设计的“动作”,是的“取址”、“译码”、“执行”。
3、不同的地址存储不同的内容,有些内容是我们需要看见的,需要我们改变的,有些内容是我们不需要看见的,对的,需要看见的改变的就通过引脚引出来了,有些我们不需要看见的就没有引出来,所以你看见有些东西芯片上没有,这就是不需要我们看见的;比如我们需要定时器跑起来,怎么办呢,我们就向这些地址写不同的值,不同的值就实现不同的功能,好吧,这些地址还有个名字叫做“寄存器”。
4、其实只是些地址也是并没有用,地址嘛存的还是0/1.怎么办,单片机厂商还做了些“外设”将这些地址的功能表现出来将这些功能放大,比如IO口。
5、这样就好了有了单片机架构,有了外设,单片机可以工作了。其实一个地址可以存的数据一般是8位的所以可以赋8位的data。那为什么有的寄存器只赋一位呢,因为他就是一位只是取了个名字而已,去看看单片机的Datasheet就可以了。说明一下其实IO芯片上的引脚和寄存器虽然是对应的但是不能单单把引脚看成寄存器。
6、嗯,讲了这么多废话,我也不知我在说什么,你大概也没有明白,还是听楼上的去看看Datasheet吧,去看书吧。
赤焰火狐
3楼-- · 2019-07-15 23:47
TMOD、TCON、TR1、T0等是集成在单片机内部的特殊功能寄存器,与IO口并没有关系。
如果你用定时器中断的话,并不需要修改电路。
多看看书

一周热门 更多>