单片机的问题
ORG 0000H
JMP START
ORG 0003H
JMP X0
ORG 000BH
JMP TIM0
ORG 0100H
START:
MOV TMOD,#01H
MOV TH0,#0FEH
MOV TL0,#0CH
SETB EA
SETB ET0
MOV R1,#50
MOV R2,#20
JMP $
X0: SETB TR0
RETI
TIM0:
MOV TH0,#0FEH
MOV TL0,#0CH
CPL P2.0
DJNZ R1,LOOP1
MOV R1,#50
DJNZ R2,LOOP1
CLR TR0
MOV R2,#20
MOV R1,#50
LOOP1: RETI
END
用这个程序产生500hz的方波 持续1s定时器就停止,为什么示波器没现象
其他:给你一个程序,可以产生方波和PWM
#include"reg52.h"
bit flag; //pwm 标志
unsigned int count;
sbit P23=P2^3;
void InitTimer0()
{
TMOD = 0x01;
TH0 = (65536-1000)/256;
TL0 = (65536-1000)%256;
EA = 1;
ET0 = 1;
TR0=1;
}
main()
{
InitTimer0();
while(1)
{
P23=flag;
}
}
void timer0() interrupt 1
{
TH0 = (65536-1000)/256;
TL0 = (65536-1000)%256;
count++;
if(count==1000) count=1;
if(count<300) flag=1; //改变count 可以调整pwm占空比。count=500,就是方波
else flag=0;
} 程序没开外中断0,加上就可以了。
……
START:
MOV TMOD,#01H
MOV TH0,#0FEH
MOV TL0,#0CH
SETB EA
SETB ET0
setb ex0 ;允许外中断0
setb it0 ;下降沿触发
MOV R1,#50
MOV R2,#20
JMP $
上一个:LUNA后台按键
下一个:51汇编 宏定义