外部中断与定时器中断实验
程序员文章站
2022-06-09 08:54:44
...
已知单片机晶振频率为12MHZ,自行选取定时/计数器,定时/计数器工作方式自选,编写程序,使P1.7端输出周期为0.5ms方波。
解题思路:
假设方波信号的占空比为50%,已知条件可以得,机器周期为1us,所以决定采用T0定时,工作方式0,已知输出周期为0.5ms,则每定时0.25ms计数使P1.7输出求反。计算的次数为0.25/1us=250次。
则计数初值:X=8192-250=7942=1F06=1111100000110,(13位,低八位有三位不用)即TH0=F8,TL0=06。
C语言:
#include <reg52.h>
sbit P11=P1^7;
void exint() interrupt 0
{
TR0=1;
}
void time0int() interrupt 1
{
TL0=0X06;
TH0=0XF8;
P11=!P11;
}
void main()
{
SP=0X60;
TMOD=0X00;
TL0=0X06;
TH0=0XF8;
TR0=1;
ET0=1;
EA=1;
while(1)
{
;
}
}
汇编语言:
ORG 0000H
LJMP MAIN
ORG 0000H
LJMP INTOP
ORG 000BH
LJMP T0P
ORG 0030H
MAIN: MOV SP,#60H
MOV TMOD,#00H
MOV TH1,#0F8H
MOV TL1,#006H
SETB ET0
SETB TR0
SETB EA
HERE: SJMP HERE
INTOP: SETB TR1
T0P: MOV TL0,#006H
MOV TH0,#0F8H
CPL P1.7
END
附上仿真图:
上一篇: Easy IoT实现mqtt实验