📄 timer0_s.c
字号:
////////////////////////////////////////////////////////////////////
//文件名:timer0.c
//功能描述:从单片机上定时器中断处理函数等
////////////////////////////////////////////////////////////////////
#include "reg52.h"
#include "timer0_s.h"
#include "dianji_s.h"
#include "chaoshengceju.h"
#include "INTRINS.H"
#include "comm_s.h"
//////////////////////////////////////////////////////////////////
//定时器初始化
void init_timer0(void)
{
TMOD=0x01;
TH0=(65536-TIME_OVERLOAD)/256;
TL0=(65536-TIME_OVERLOAD)%256;
ET0=1;
PT0=0;
EA=1;
TR0=1;
}
//////////////////////////////////////////////////////////////////
//定时器中断处理函数
//TIME_OVERLOAD=4000,4ms中断一次
void timer0(void) interrupt 1
{
static data uchar count;
TH0=(65536-TIME_OVERLOAD)/256;
TL0=(65536-TIME_OVERLOAD)%256;
count++;
//每64ms检测一次前方是否有障碍
//检测完前方后再过32ms检测一次后方是否有障碍
if(!(count&0x0f))chaosheng_qian();
if(!((count+0x08)&0x0f))chaosheng_hou();
//每4ms调用一次步进电机驱动程序
driver_dianji();
}
//////////////////////////////////////////////////////////////////////
//延时函数
void delay_ms(uint n)
{
data uchar i;
while(n--)
{
for(i=100;i>0;i--)
{
_nop_(); //内联函数,对应一条汇编指令NOP
_nop_();
_nop_();
}
}
}
//////////////////////////////////////////////////////////////////////
//延时函数
void delay_100us(uint n)
{
data uchar i;
for(;n>0;n--)
{
for(i=20;i>0;i--)
{
_nop_(); //内联函数,对应一条汇编指令NOP
_nop_();
_nop_();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -