📄 cscj_timer0._c
字号:
#include <iom128v.h>
#include <iom128.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#pragma interrupt_handler int0:2
uchar flag=0;
/*******************************************
函数名称: delayus
功 能: 延时指定微秒(8.31M晶振)
参 数: us--延时的微秒数(大约,不是很精确,MS越大越准确)
返回值 : 无
/********************************************/
void delayus(uint us)
{
uint i;
us=us*13/10; //13/10是在8.31MHz晶振下,通过反复实验得到的数值
for( i=0;i<us;i++);
}
/*******************************************
函数名称: delay()
功 能: 8.31MHz晶振下延时 z ms
参 数: z
返回值 : 无
/********************************************/
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=1185;y>0;y--);
}
/*******************************************
函数名称: int0()
功 能: 进入中断后让发光二极管点亮
检测是否收到超声波
返回值 : 无
/********************************************/
void int0()
{
flag=1;
}
/*******************************************
函数名称: int0_init()
功 能: 中断初始化
参 数: 无
返回值 : 无
/********************************************/
void int0_init()
{
DDRD&=~BIT(0);
PORTD|=BIT(0); //设置输出口上拉
EICRA=0X02;
EIMSK=0X01;
SREG=BIT(7);
}
/*******************************************
函数名称: timer0_init()
功 能: 定时器0初始化 配置输出40khz占空比50%的方波
参 数: 无
返回值 : 无
/********************************************/
void timer0_init()
{
DDRB|=BIT(PB4);
ASSR&=~BIT(3);
TCCR0=0X19;
OCR0=0XC7;//经示波器测试产生39.92kHZ的正弦方波
}
void main()
{
DDRA=0XFF;
PORTA=0X00;
timer0_init();
int0_init();
while(1)
{
if(flag==1)
{
flag=0;
PORTA=0X55;
delayms(500);
PORTA=0X00;
delayms(500);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -