单片机定时器和中断初始化流程是什么样的啊?还有就是TMOD和SCON的初值是怎么计算出来的?

单片机定时器和中断初始化流程是什么样的啊?还有就是TMOD和SCON的初值是怎么计算出来的?老是不清楚怎么才算开始定时/计数、还有中断///

至于那些书上都有的理论知识我就不说了,就简单的说一下吧,楼主可以想简单点
定时器工作的流程可以按照这个顺序(以51为例用定时器0方式一产生50毫秒的定时)
1、确定使用哪个定时器,使用哪种方式,这一步通过TMOD设置,TMOD的低四位是设置定时器0的,高四位是用来设置定时器1的,其中的M0,M1是用来设置定时器工作在哪种方式,GATE一般用不要设置,C/T是选择计数模式还是定时模式的,如:TMOD = 0X01,就说明定时器0工作在方式1。
2、接下来就要设置定时的时间,用定时器定时50毫秒,可以用这种方式TH0 = (65535 - 50000) / 256,TL0 = (65535 - 50000) % 256;可以这样理解:因为这是定时器的初值,也就是说计数脉冲就是在这个数的基础上向上递增,到达65535后就溢出产生中断,至于为什么是对256取整,和取余的话楼主自己先琢磨吧, 不懂再hi我;
3、第三步就要打开中断了,使用IE寄存器,我一般是对各个位进行单独设置,这样看起来感觉更好,首先打开总中断EA = 1,这一步是所有中断所必须的,然后打开定时器0中断,ET0 =1;
4、这时准备工作都准备好了就要开始启动定时器了,使用TCON寄存器,TR0 = 1,到现在为止就实现了一个50毫秒的定时了;
总结一下:TMOD = 0X01; TH0 = (65535 - 5000) / 256; TL0 = (65535 - 50000) % 256; EA = 1; ET0 = 1; TR0 = 1,至于那个中断函数我就不写了,要注意的是方式0 ,1, 3是不能自动重装的,所以得在中断函数中重新对TH0 ,TL0赋初值,楼主说的那个SCON寄存器就是用于串口的,定时器会用了的话,串口也就会了的,希望能够帮助楼主了
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-13
只有TH1、TL1,TH0、TL0,需要设置初值,TMOD和SCON是寄存器,C/T为0时定时,为1时计数,开始中断的话要设置IE寄存器。
建议看书吧,书上有详细介绍的比如 郭天祥的书,有些书上介绍的含糊不清,找一本好的书看可以事半功倍。你学汇编语言的话建议你看范红刚的书。郭天祥的是C语言。这是我目前比较喜欢的书

单片机定时器和中断初始化流程是什么样的啊?还有就是TMOD和SCON的初值是...
1、确定使用哪个定时器,使用哪种方式,这一步通过TMOD设置,TMOD的低四位是设置定时器0的,高四位是用来设置定时器1的,其中的M0,M1是用来设置定时器工作在哪种方式,GATE一般用不要设置,C\/T是选择计数模式还是定时模式的,如:TMOD = 0X01,就说明定时器0工作在方式1。2、接下来就要设置定时的...

外部中断初始化的流程
1、先初始化,设置外部中断、串口工作模式,开中断;2、写中断服务程序;\/\/---*\/\/\/初始化\/\/---*\/voidinit(void){TMOD|=0x20;\/\/工作模式SCON=0x50;TH1=0xfd;\/\/定时器1初值,设置波特率TL1=0xfd;\/\/波特率为9600TR1=1;\/\/启动定时器1ES=1;\/\/串口中断允许工作于方式1IT0=1;\/\/外部中断0...

8051单片机计数器初值计算问题
TMOD=0x20 ; \/\/定时器T1工作于方式2 PCON=0; \/\/SOMD=0 注:此处我有疑问 SCON=0xD0; \/\/串行口工作于方式3 波特率=2^SMOD * FORC*(32*12*(256-TH1))将TH1=0F3H带入,可以算出波特率为 4800 ,只有一半 我觉得是不是搞错了,如果SMOD的=1 的话就是 9600 了,呵呵~...

我想用一个单片机去控制另外一个单片机,如何连接以及相应的数据...
分析:设定时器1工作于方式2,TMOD=00100000b=0x20。定时器的初值计算:9600=K*fosc\/[32*12*(256-TH1)],这里设SMOD=0,则K=1。fosc=11.0592MHz,计算得到:TH1=253=0x0fd。SCON的确定:串口工作在方式1,允许接收。 所以: SCON=01010000b=0x50。主机采集数据,并发送给从机的参考程序...

51单片机串口初始化步骤,首先初始化那个在初始化那个,最好是华为等大...
推挽或漏极开路)-》设定定时器1工作模式在八位自动重载模式-》载入定时器初始值-》开启定时器1-》开启串口0中断使能-》开启总中断使能-》开启串口0接受允许-》设定串口0工作模式-》初始化完成。将数据压入发送缓冲寄存器 用while 语句等待发送标志位被置位 然后清0,以为数据发送完成。

使用8051单片机的串行通信方式1,要求波特率9600bps,请编写初始化程序...
初始化程序:SCON = 0x50 ; \/\/方式1,允许接受 TMOD = 0x20 ; \/\/设置time1,方式2 TH1 = 0xfd; \/\/波特率9600b\/s 晶振12MHz TL1 = 0xfd;ES = 1 ; \/\/允许串口中断 EA = 1; \/\/中断总开启 TR1 = 1 ; \/\/T1开启 ...

简述单片机应用时串行口初始化的内容
装入定时初值,启动定时器,设置串口工作方式。当执行一条指令时,先把它从内存中取到数据寄存器中,然后再传送到指令寄存器。当系统执行给定的指令时,必须对操作码进行译码,以确定所要求的操作,指令译码器就是负责这项工作的。其中,指令寄存器中操作码字段的输出就是指令译码器的输入。

C51单片机程序
T1初值 TMOD = 0x21;定时器\/计数器模式控制寄存器 如图 GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1 GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。C\/T=0时为定时功能,C\/T=1时为计数功能 M0、M1——方式选择功能 M1M0 工作方式 计数器模式 TMOD(设置定时器模式)0 0 ...

有几个单片机的英文缩写不知道全称,高手请进。
IE = interrupt enable \/\/ 中断使能 TMOD = timer mode \/\/定时器 方式 (定时器\/计数器 控制寄存器)TCON = timer control \/\/定时器控制 IP = interrupt priority \/\/中断优先级 SCON=serial control\/\/串行口控制寄存器

单片机波特率问题
PCON=0x00; \/\/SMOD=0,串口方式1、2、3时,波特率正常,(0x80就加倍)TR1=1; \/\/启动定时器1 SCON=0x50; \/\/8位可变波特率 (无校验位)REN=1; \/\/允许接收 ES = 1; \/\/开串口1中断 EA=1; \/\/开启中断总开关 } 2、如果是12T、11.0592晶振、9600波特率、用定时器1...

相似回答