51单片机时钟频率6MHz,要求从P1.0处产生一个频率100Hz,占空比为1:2。写出相关程序,急用,正确一定给分

如题所述

第1个回答  2013-12-01
#include"reg51.h"
#define TRUE 1
#define FALSE 0
#define uchar unsigned char
#define uint unsigned int

#define th0 0xf6
#define tl0 0x3c
sbit WaveOut=P1^0;
void Timer0() interrupt 1
{
TL0=tl0;

TH0=th0;

WaveOut=~WaveOut;

}

void TimerInit()
{
TMOD=0x01;

TH0=th0;

TL0=tl0;

TR0=1;

ET0=1;

EA=1;

}
void main()
{
TimerInit();

while(1);

}

现打程序,未编译,愿上帝保佑你!!
第2个回答  2013-12-01
#include<reg51.h>
#include<reg52.h>
sbit p1=P1^0;
void T0ISR(void) interrupt 1
{
p1=~p1;
TH0=(65536-2500)/256;
TL0=(65536-2500)%256;
}
void main(void)
{
p1=0;
TMOD=0x01;
TH0=(65536-2500)/256;
TL0=(65536-2500)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
编译已通过。
第3个回答  2013-12-01
如下即可:

ORG 0000H
SJMP BEG
ORG 000BH
MOV TL0, #LOW(65536 - 2500)
MOV TH0, #HIGH(65536 - 2500)
CPL P1.0
RETI
BEG:
MOV TMOD, #01H
MOV TL0, #LOW(65536 - 2500)
MOV TH0, #HIGH(65536 - 2500)
MOV IE, #82H
SETB TR0
SJMP $
END