else
density=((-0.3)*b+0.2)*2000; //density=((-0.16)*b+0.125)*2000; density_dis_buff(density); }
#pragma interrupt_handler time0_comp_isr:iv_TIM0_COMP void time0_comp_isr(void) {
time_2ms_ok=1; }
void init_devices(void) //系统的初始化 {
//stop errant interrupts until set up CLI(); //关中断 port_init(); adc_init(); MCUCR = 0x00; GICR = 0x00;
TIMSK = 0x02; //timer interrupt sources SEI(); //开中断
//all peripherals are now initialized }
void process()//数据的显示和处理 {
unsigned char i,a,b,c; posit=0;
for(i=0;i<4;i++){
PORTD = position[3-posit];
PORTB = led7[dis_buff[posit]];//循环在数码管实现动态显示
posit++;
if (dis_buff[2]>=8||dis_buff[3]>=1)//当酒精浓度大于800ml/L的时候,蜂鸣器报警,led发光报警。
PORTA=0x20; else
PORTA=0x00; for(a=0;a<2;a++) for(b=0;b<4;b++)
for(c=0;c<220;c++);//实现延时功能,延时为1-10ms即可以让数码管动态显示 }
}
17
void main(void) {
init_devices(); TCCR0=0x0B; TCNT0=0x00; OCR0=0xE6; SREG|=0X80; while(1) {
//if(time_2ms_ok){ process(); // time_2ms_ok=0; //} } }
附录C
实物图片:
18
相关推荐: