89C51单片机定时器的应用1题,求编程思路!

来源:百度知道 编辑:UC知道 时间:2024/06/20 14:57:39
已知8051单片机的fosc=12MHz用T1定时。试编程由P1.0和P1.1引脚分别输出周期为2ms和500us的方波。

要汇编的话给你写个
定时中断,定时为 250us P1.1 就取反得 500us 方波
软件计时(CNT EQU 30H 初始化时 MOV CNT,#00H),在CNT计数为4 的时候 P1.0取反,同时 MOV CNT,#00H就可以得到2ms方波咯

#include <reg51.h>

void InitTimer1(void)
{
TMOD = 0x10;
TH1 = 0x0FE;//500us
TL1 = 0x0C;
EA = 1;
ET1 = 1;
TR1 = 1;
}

#include <reg51.h>

void InitTimer1(void)
{
TMOD = 0x10;
TH1 = 0x0F8;//2000us
TL1 = 0x30;
EA = 1;
ET1 = 1;
TR1 = 1;
}

#include <reg51.h>
unsigned i=0;
void timeover() interrupt 3
{ TR1 = 0;
TH1 = 0x0FE;//500us
TL1 = 0x0C;
P1^1=~P1^1;
if(i==0)P1^0=~P1^0;
i++;i%=4;
TR1 = 1;
}

void main()
{ TMOD = 0x10;
TH1 = 0x0FE;//500us
TL1 = 0x0C;
EA = 1;
ET1 = 1;
TR1 = 1;
while(1)
;
} //两个IO口同时输出,不知道楼主满意不?

定时器中断,