如果单片机的时钟频率为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);
}本回答被网友采纳

51单片机晶振频率为12MHz,利用中断在P1.1口输出50HZ的方波,C语言,哪...
while(1); }void timer0() interrupt 0{TL0 = 0xF0;\/\/设置定时初值TH0 = 0xD8;\/\/设置定时初值 port^=1; }

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

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,用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...

设晶振为12MHz,选用定时器0的工作方式1产生20ms定时中断,并实现驱动2...
若单片机的晶振频率为12MHz,用51单片机内部定时\/计数器T0,工作方式为1,在单片机P1.0口产生周期为20ms的方波,波形占空比为50%。试解答下列问题: 1) 计算定时器的装入初值; 2) 用中断的方式使用定时器,编写相关程序序

已知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晶振,单片机机械周期 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...

AT89C52RC单片机频率12MHz,用定时器1及中断的方法,产生周期为1s的等宽...
uchar num1;void main(){ TMOD=0x01;\/\/设置定时器0为工作方式1 EA=1;\/\/开总中断 ET0=1;\/\/开定时器0中断 ET1=1;TR0=1;\/\/启动定时器0 TR1=1;while(1){ if(num1==2){ num1=0;d1=~d1;} } } void time1() interrupt 3 { TH1=(65536-1000)\/256;TL1=(65536-1000)%256;n...

设单片机的晶振频率为12MHz,使用T0定时100ms,在P1.2引脚产生周期为200m...
T0定时器,就算开启 16位定时,最大值也只有65536 个机械周期(指令周期),普通51单片机为 12T模式,即机械周期T=12\/Fosc=1us,16为定时 也只能是 65.536ms,根本定不到100ms,想要100ms,只能是 采用 50ms 分次定时。

相似回答