mdsk.net
当前位置:首页 >> 怎么设置定时器1方式二 >>

怎么设置定时器1方式二

TMOD=0x21; 解释:TMOD是单片机的内部寄存器.不管你是0x01也好还是0x10也好只要你付给TMOD他就是设置定时器的工作方式、 TM0D的高四位也就是你说的0010 这个是设置定时\计数器1的 低四位也就是你说的0001是设置定时器0的.所以你说的TMOD = 0x21是将定时器1设置与工作方式2.将定时器0设置成工作方式1.

TMOD是8位寄存器,高4位用于设置定时器1的模式,低4位用于设置定时器0的模式.TMOD=0x20表示这是一个2位16进制数,('0x??'在C语言中表示16进制数),而1位16进制数可以表示为4位二进制数,即0x20的20表示8位二进制数,其中高位“2”表示的高4位二进制数为0010,即设置的定时器1为工作方式2.如果要设置定时器0为方式2则TMOD=0x02.

方式2是自动重装载模式,8位计数器,其中定时器1可以用作波特率发生器.举一个例子:ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN: MOV TMOD,#02H MOV TH0,#6 MOV TL0,#6 SETB TR0 SETB ET0 SETB EA SJMP $ T0ISR: CPL P1.0 RETI END 以上程序可以在P1.0上产生周期为500us的方波.

TMOD是单片机的内部寄存器.不管你是0x01也好还是0x10也好只要你付给TMOD他就是设置定时器的工作方式、 TM0D的高四位也就是你说的0010 这个是设置定时\计数器1的 低四位也就是你说的0001是设置定时器0的.所以你说的TMOD = 0x21是将定时器1设置与工作方式2.将定时器0设置成工作方式1.希望你明白,实在不明白看书吧,那才是老师傅

定时器0工作于方式3 时,占用了定时器1的TR1和TF0.此时,定时器1只能工作于“串口波特率发生器”的模式.把定时器1,按照“波特率发生器”的模式设置,写入初始值即可正常工作.看看书去吧,有这方面的说明的.

方式几就赋TMOD几,方式0就是MOV TMOD,#00H;方式一MOV TMOD,#01H;方式二MOV TMOD,#10HTC=2的n次方-t*f/12,方式0,n取13,方式1,n取16,方式2,n取8,t是定时时间,f是晶振频率比如方式0定时0.25ms:MOV TMOD,#00HMOV TH1,#0F8HMOV TL1,#06HCLR ET1SETB TR1

定时器0,工作方式2初值设定:TMOD=0x02; //工作方式确定 TH0=(256-值); //设定初值 TR0=1; //开启定时器 EA=1; //如果要用中断则要开启总中断 ET0=1; //如果用到中断则开启定时器中断

有个东东叫单片机小精灵,应该能解决你的问题,呵呵,最近变懒了下面这个是10ms定时程序,定时器1,方式1,中断自动重装(PS:你可以在中断里面写上累加100次的变量,就等于是1s了):#include <reg51.h> void InitTimer1(void)

给你个提纲,自己写吧,如下: sbit LED=Px^x void main() { 1.定时器设置、中断设置, while(1) { 2.LED=1; //假设高电平亮 3.定时中断次数设置X=m //2秒等于m次中断 4.开定时器中断 5.While(x); //未到时间停在这一步 6.关定时器中断 7.LED=0; 8.定时中断次数设置X=n //3秒等于n次中断 9.开定时器中断 10.While(x); //未到时间停在这一步 11.关定时器中断 } } void intr() interrupt0 //中断服务函数 { 重装初值; //装入的初值时间要能被2秒、3秒整除 x--; }

tmod=0x21; 解释:tmod是单片机的内部寄存器.不管你是0x01也好还是0x10也好只要你付给tmod他就是设置定时器的工作方式、 tm0d的高四位也就是你说的0010 这个是设置定时\计数器1的 低四位也就是你说的0001是设置定时器0的.所以你说的tmod = 0x21是将定时器1设置与工作方式2.将定时器0设置成工作方式1.

网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com