msc51单片机:利用定时器T0编出使p1.0引脚输出2ms的矩形波程序,要求占空比系数为1:3

利用定时器T0编出使p1.0引脚输出2ms的矩形波程序,要求占空比系数为1:3

刚开始学单片机,请高手帮帮忙。

2ms大概是周期。
那么按照要求,是输出高电平500微秒、输出低电平1500微秒。
令T0定时500微秒,在中断程序里面,控制输出。
;下列程序,经过编译、仿真,符合要求。
;-------------------------------------
ORG 0000H
SJMP START
ORG 000BH
SJMP T0_INT
;-------------------------------------
START:
MOV TMOD, #01H
MOV TH0, #(65536-500)/256
MOV TL0, #(65536-500) MOD 256 ;500us@12MHz
SETB TR0
SETB ET0
SETB EA
CLR P1.0
MOV R2, #3 ;输出3个500us的低电平
SJMP $
;-------------------------------------
T0_INT:
MOV TH0, #(65536-500)/256
MOV TL0, #(65536-500) MOD 256 ;500us@12MHz
CLR P1.0
DJNZ R2, T0_END
SETB P1.0
MOV R2, #4
T0_END:
RETI
;-------------------------------------
END
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-09
晶振=12MHz,T=12/12M=1us,采用方式一定时500微秒
#include <reg51.h>
#define uchar unsigned char
void init(void);
sbit wave=P1^0;
uchar num=0;
void main(void)
{
init();
while(1);
}
void init(void)
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer(void)interrupt 1
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
num++;
if(num==1)
wave=1;
else
wave=0;
if(num==4)
num=0;
}
相似回答