设单片机fosc=12MHz,利用T0方式1产生10ms定时,在P1.0引脚上输出周期为2ms的方波。
1、你的思路和程序都有问题
2、如果你想在P1.0引脚上输出周期为2ms的方波,T0定时中断应该定在1ms,然后再中断程序中对P1.0取反,每个1ms对P1.0取反一次,就得出周期为2ms的方波。
3、如果是定时10ms,计数器初值应该是D8F0H,而不是6318H
MOV TH0,#D8H
MOV TL0,#F0H
4、MOV R1,#500指令是非法的,R1是8位寄存器,最大赋值为255。
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
SETB ET0
SETB EA
MOV R2,#10
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E
MOV R2,#10
CPL P1.0
T0E:
RETI
END
可以这样写:
ORG 0000H
START:
MOV SP,#60H
MOV TMOD,#01H
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
LOOP:
JNB TF0,$
CPL P1.0
CLR TF0
MOV TH0,#0D8H
MOV TL0,#0F0H
LJMP LOOP
END
不能。
1.你没有初始化定时器。
2.R1存放的最大值为255,不可能是500.
3.既然要用定时器T0来实现,为什么还要搞那个S0延时函数?
4.。。。
设单片机fosc=12mhz,利用定时\/计数器1编程实现p1.0和p1.1引脚上分别输出...
sbit P1^0=P1_0;sbit P1^1=P1_1;unsigned char m=0;void main(){ EA=1; ET1=1; TMOD=0x20; TH1=0x06; TL1=0x06; while(1);}void xxx() interrupt 3{ m++; if(m%2=0) P1_1=~P1_1; if(m==8) { m=0; P1_0=~P1_0; } }...
设单片机fosc=12MHZ,利用定时\/计数器1编程实现P1.0和P1.1引脚上分别输出...
周期是2ms和500us的方波,那么定时器的初值应该是1ms和250us,定时器初值分别设置为 TH0=(65536-1000)\/256 TL0=(65536-1000)%256 和 TH0=(65536-250)\/256 TL0=(65536-250)%256 即可,初始化什么的我想你知道吧,反正最大可以定时65536us,减去的数就是你想定时时间 ...
51单片机fosc=12Mhz利用T0方式1产生500ms的定时,在p1.0引脚上输出周期...
ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0 SETB ET0 SETB EA MOV R2,#10 SJMP T0ISR:CLR TR0 MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0 DJNZ R2,T0E MOV R2...
设单片机fosc=12MHz,利用T0方式1产生10ms定时,在P1.0引脚上输出周期为2m...
你的程序有点乱,没有理解透单片机定时器的作用。在这里既然用定时器又为什么要用软件延时呢,定时器方式1最大可以定时65.536ms,定10ms完全可以了,不用再用软件延时了。另外你计算的定时器定时初值不太正确,你再算一下。可以这样写:ORG 0000H START:MOV SP,#60H MOV TMOD,#01H MOV TH0,#...
假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms...
12MHz晶振,单片机机械周期 T=12\/Fosc=12\/12MHz=1us;T1定时器工作模式1 为 16位定时器,定时计算公式为:t= (2^16-<TH1:TL1>)×机械周期 T,将T=1us,t=20ms 代入公式得:(65536-<TH1:TL1>)×1us=20ms,得:TH1:TL1=65536-20ms×1000us\/ms÷1us=45536=0xB1E0,得:TH1=0xB1...
已知fosc=12mhz,如果利用定时器to产生20ms的定时长度,定时常数为多少...
12 hz是1us 设置长度为100 us 然后循环20次 就有20ms了
已知8051单片机的fosc=12MHz,用T1 定时,试编程由P1.2 和P1.3 引脚分别...
代码如下:第一个代码程序:ORG 0000H LJMP MAIN ORG 001BH JMP T1_INT ORG 0030HMAIN:MOV TMOD, #20HMOV TH1, #6MOV TL1, #6MOV IE, #88HSETB TR1MOV R7, #4SJMP $T1_INT:CPL P1.3DJNZ R7, T1_ENDCPL P1.2MOV R7, #4T1_END:RETI END 第二个500us程序:include <reg51.h...
单片机的fosc=12MHz,要求用T0的方式1编程,在P1.0脚输出周期为2ms的方 ...
1000是1000微秒也就是半个周期,TH0是高八位,每位代表256,也就是TL0.记数脉冲每1微秒一次.2ms周期就要求记数初值要送1000.所以先1000/256得的数送TH0,1000%256余数送TL0.前面叫-,表示TH0=TH0-(1000/256),同理TL0=-(1000%256); 送入计数初值.
请各位高手回答一下下面的单片机程序问题!谢谢!
若晶振频率Fosc=12MHz,机器周期 = 12\/Fosc = 12\/(12x10^6Hz) =1μs 执行 DJNZ Rn, rel 指令耗用2个机器周期,即2μs 该段程序执行该类指令总次数=250x200x10=500000 耗用时间 = 500000x2μs = 10^6μs =1s 若改为延时0.1 第三行指令改为 LOOP1: MOV R1, #01 若改为延时0...
设单片机的fosc=12MHz,采用T0定时方式1在P1.0脚上输出周期为1ms的方...
fosc=12MHz,T0定时方式1在P1.0脚上输出周期为1ms的方波。T1定时方式1在P1.1脚上输出周期为2ms的方波。要求T0使用查询法,T1使用中断法。ORG 0000H LJMP START ORG 001BH LJMP T1_INT ORG 0030H START:MOV TMOD, #11H MOV TL1, #LOW(65536 - 1000)MOV TH1, #HIGH...