📄 impulse.c
字号:
//用定时器0和定时器1分别产生周期为60ms和2.5ms的两种脉冲
#include <absacc.h> //头文件
#include <intrins.h>
#include <reg52.h>
#include <ctype.h>
#define uchar unsigned char //宏定义
uchar data i=0,j=0; //定义全局变量
sbit T_INT0=P2^0; //位定义
sbit T_INT1=P2^1;
sbit DIRECTION=P2^2;
sbit WDI=P2^4;
sbit LED=P0^0;
void initial(void); //函数(子程序)声明
void delay(void);
main() //主程序
{
for(i=0;i<5;i++) //灯闪五次
{
for(j=0;j<100;j++)
{
delay();
}
LED=0;
for(j=0;j<100;j++)
{
delay();
}
LED=1;
}
initial(); //调用初始化子程序
DIRECTION=0;
TR0=1; //启动定时器1
delay(); //延时1ms
TR1=1; //启动定时器0
for(;;) //主循环
{
}
}
void initial(void) //初始化子程序
{
TMOD=0x11; //定时器0和1都选择方式1
TH0=-(30000/256); //定时器0初值 晶振6CLK 每个机器周期2微秒
TL0=-(30000%256);
TH1=-(1250/256); //定时器1初值
TL1=-(1250%256);
EA=1; //CPU开中断
ET0=1; //定时器0开中断
ET1=1; //定时器1开中断
}
void timer0() interrupt 1 using 1 //定时器0中断子程序
{
T_INT0=0; //下降沿来触发主机外部中断0
_nop_();
_nop_();
_nop_();
_nop_();
T_INT0=1; //变高电平
TH0=-(30000/256); //定时器0重载初值
TL0=-(3000%256);
}
void timer1() interrupt 3 using 3 //定时器1中断子程序
{
T_INT1=0; //下降沿来触发主机外部中断1
_nop_();
_nop_();
_nop_();
_nop_();
T_INT1=1; //变高电平
TH1=-(1250/256); //定时器1重载初值
TL1=-(1250%256);
}
void delay(void) //延时子程序
{
uchar a; //局部变量
for (a=0;a<100;a++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
WDI=!WDI;
_nop_();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -