?? 1602_main._c
字號:
#include<iom16v.h>
#include<macros.h>
#include"1602.h"
#define uint unsigned int
#define uchar unsigned char
#define ulint unsigned long int
uchar F[]={"F="},Hz[]={"Hz"},T[]={"T="};
uchar S[]={"S"},uS[]={"uS"},dot[]={"."};
float TT,FF;
ulint f,ff,T_int;
uchar i,t,f_hign,f_low,hignf;
void port_init(void)
{
DDRA = 0xff;
PORTA = 0xff;
PORTB = 0x00;
DDRB = 0xF0;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
DDRD = 0xff;
PORTD = 0xff;
}
//TIMER0 initialize - prescale:1024
// WGM: Normal
// desired value: 8mSec
// actual value: 8.000mSec (0.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x83; //set count
TCCR0 = 0x35; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
TCNT0 = 0x83; //reload counter value
t++;
}
//TIMER1 initialize - prescale:Falling edge
// WGM: 0) Normal, TOP=0xFFFF
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCCR1A = 0x00;
TCNT1H=0;
TCNT1L=0;
TCCR1B = 0x07; //start Timer
}
#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
void timer1_ovf_isr(void)
{
TCNT1H=0;
TCNT1L=0;
hignf++;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
port_init();
timer0_init();
timer1_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x05; //timer interrupt sources
}
//主函數
void main()
{
CLI();
t=0;
hignf=0;
init_devices();
s_ms(5000); //延時
LcdInit(); //1602初始化
WriteChar(1,0,2,T);
WriteChar(1,15,1,S);
WriteNum(1,4,0);
WriteChar(1,5,1,dot);
WriteChar(2,0,2,F);
WriteChar(2,14,2,Hz);
SEI();
while(1)
{
if(t==125) //100KHz~5MHz
{
f_low=TCNT1L;
f_hign=TCNT1H;
f=(ulint)f_hign*256+f_low; //轉換為unsigned long類型,否則所測頻率最多32670HZ
if(hignf)
{
f+=hignf*65536;
hignf=0;
}
FF=(float)f;
for(i=13;i>6;i--)
{
WriteNum(2,i,f%10);
f/=10;
}
TT=1/FF;
T_int=(ulint)(TT*1000000000);
for(i=14;i>5;i--)
{
WriteNum(1,i,T_int%10);
T_int/=10;
}
t=0;
//init_devices();
hignf=0;
timer0_init();
timer1_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x05; //timer interrupt sources
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -