51单片机 C 语言编程:单片机定时中断
扫描二维码
随时随地手机看文章
要求:P1.0输出周期为2ms的方波,P1.1输出5ms的方波,占空比都为1:1.(高低电平一样的)。
晶振频率为24MHz。(使用T0和T1两个定时计数器)汇编或C都行。
编程如下:
//================================================
#include
#define uchar unsigned char
#define uint unsigned int
void init();
sbit P10 = P1^0;
sbit P11 = P1^1;
//----------------------------
main()
{
init();
while(1) { }
}
//----------------------------
void init()
{
TMOD = 0x11;
TH0 = (65536 - 2000) / 256; //1ms@24MHz
TL0 = (65536 - 2000) % 256;
TR0 = 1;
TH1 = (65536 - 5000) / 256; //2.5ms@24MHz
TL1 = (65536 - 5000) % 256;
TR1 = 1;
ET0 = 1;
ET1 = 1;
EA = 1;
}
//----------------------------
void timer0() interrupt 1
{
TH0 = (65536 - 2000) / 256; //1ms@24MHz
TL0 = (65536 - 2000) % 256;
P10 = ~P10;
}
//----------------------------
void timer1() interrupt 3
{
TH1 = (65536 - 5000) / 256; //2.5ms@24MHz
TL1 = (65536 - 5000) % 256;
P11 = ~P11;
}
//================================================