如果单片机的时钟频率为12MHz,编写用单片机的定时方式产生微50Hz的等宽矩形方波从P1.7输出的程序

程序

思路:对于89c51单片机而言,选择单片机定时方式1,即采用16位(TH1、TL1)定时方式,定时0.01s,并设置定时器初值为#0B1D0H。
程序如下:
ORG 0000H
AJMP MAIN
ORG 001B
AJMP SERVE
ORG 0030H
MAIN:MOV TMOD,#10H;设置定时器工作方式1
MOV TH1,#0B1H
MOV TL1,#0D0H;
SETB ET1;
SETB TR1;
SETB EA;开启中断
SJMP $
SERVE:CPL P1.7;
CLR TF1;
MOV TH1,#0B1H
MOV TL1,#0D0H;
RETI;
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-13
50Hz就是一周期20ms 。那就可以用定时器10ms中断一次对P1.7求反,这样就能产生50Hz的方波。
第2个回答  推荐于2017-10-18
#include<reg51.h>

sbit pluse=P1^7;
void t0isr() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
pluse=~pluse;
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}本回答被网友采纳

设单片机晶振频率为12MHz,使用定时器1以方式0产生周期为600微妙的等 ...
;=== ORG 0000H SETB TR1 LOOP:MOV TL1, #(65536 - 300) MOD 32 MOV TH1, #(65536 - 300) \/ 32 JNB TF1,CLR TF1 CPL P1.0 JMP LOOP END ;===

在8051单片机的时钟频率为12MHz,用T0定时,试编程使P1.0和P1.1分别输出...
有很多方法的,第一种是用模拟PWM,设置好占空比为1\/2,根据周期设定好频率就可以了,你这个不需要变动的话,不用PWM也可以,可以这样写:define T0_delay 1000 sbit P10=P1^0;sbit P11=P1^1;unsigned int Pwm_Count=0;void Timer0_init();void main(){ Timer0_init();while(1);\/\/空循环...

.已知51单片机系统晶振频率为12MHz,请利用定时器1工作方式1,中断方式...
SJMPT1_INT MOVTMOD,#10H;设置T1定时方式1 MOVTH1,#(65536-50000)\/256;送入初始值。MOVTL1,#(65536-50000)MOD256;定时50000us@12MHz MOVIE,#10001000B;开放总中断和T1中断。SETBTR1;启动T1 MOVTH1,#(65536-50000)\/256;重新送入初始值。MOVTL1,#(65536-50000)MOD256;定时50000...

51单片机晶振频率12MHz,编程实现P1.0输出频率为2KHz,占空比为50%的方波...
手机版 我的知道 51单片机晶振频率12MHz,编程实现P1.0输出频率为2KHz,占空比为50%的方波,使用定时器 51单片机晶振频率12MHz,编程实现P1.0输出频率为2KHz,占空比为50%的方波,使用定时器T1工作方式2... 51单片机晶振频率12MHz,编程实现P1.0输出频率为2KHz,占空比为50%的方波,使用定时器T1工作方式2 展开 我来...

8051单片机的晶振频率为12MHz,试用定时器中断方式编程实现从P1.0引脚...
ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#02 MOV TH0,#6 MOV TL0,#6 SETB TR0 SETB ET0 SETB EA MOV R2,#4 SJMP T0ISR:DJNZ R2,T0E MOV R2,#4 CPL P1.0 T0E:RETI END

急!89C51单片机频率12MHz,用定时器1及中断的方法,产生周期为1s的等宽...
void InitTimer1(void){ TMOD = 0x10;TH1 = 0x0FC;TL1 = 0x18;EA = 1;ET1 = 1;TR1 = 1;} void main(void){ InitTimer1();while(1);} void Timer1Interrupt(void) interrupt 3 { TH1 = 0x0FC;TL1 = 0x18;p11 = ~p11;} 我没有给你写注释,是希望你不要完全等现成,希望你...

已知8051单片机的fosc=12MHz,用T1 定时,试编程由P1.2 和P1.3 引脚分别...
定时器T1定时250μs,工作方式设置为方式2,用TL1作为8位定时器,产生250μs的定时,定时初值X为:X=2^8-(12* 10^6* 250 * 10^(-6))\/12=6 TH1=TL1=6H,TMOD=20H 源代码如下:MOV TMOD,#20H MOV TH1,#06H MOV TL1,#06H SETB TR1 DS1_RPTA:MOV R2,#04H DS1_...

单片机:若系统晶振频率是12MHZ,利用定时器\/计数器1定时1ms,在方式0下...
在单片机系统中,当晶振频率设定为12MHz时,理解定时器\/计数器1定时1毫秒(1ms)的设置至关重要。首先,我们来计算基本的机器周期:12MHz等于12000000赫兹,因此每个机器周期为12\/12MHz,即1微秒(us)。1毫秒等于1000个微秒,要让定时器\/计数器1定时1ms,我们需要确保计数在1000个机器周期后溢出以触发...

假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms...
定时器的初值的计算如下:在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12M晶振,则定时器的计数频率为1MHZ。假设定时时间为T,机器周期为T1,即12\/晶振频率。X为定时器初值。则 X=2^n-T\/T1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8 ...

如何用单片机产生方波
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...

相似回答