这是我写的程序,我想显示一个a字,我先发a的通码给电脑,接着发0XFF和a的断码给电脑,为什么电脑不显示a,还有我一动一下鼠标就报警!请问为什么,是不是我的程序不对,请各位指教
#include <avr/io.h> #include <avr/delay.h> #include <avr/signal.h> #include <stdio.h> unsigned char del_1,key_data,key_down; //本程序想在电脑上显示a字符,发送流程是先发送A的通码,再发0XFF,接着发A的断码,请问我这样做对吗?PB0接CLK PB7接DATA int main(void) { DDRB=0X00; DDRC=0X00; //PC IN PORTC=0XFF; while(1) { while(1) { recheck: DDRB=0X00; while((PINB&0X01)!=0X00); //判断CLK是否为LOW _delay_us(50); if((PINB&0X01)!=0X01)//判断CLK是否为HIGH goto recheck; while((PINB&0X80)!=0X80) goto recheck; //判断DATA是否为HIGH _delay_us(20); //0 DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck;//0 _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; _delay_ms(50); while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; //判断DATA是否为HIGH _delay_us(20); //0 DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); _delay_us(50); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; //判断DATA是否为HIGH _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; _delay_ms(50); while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; //判断DATA是否为HIGH _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; //判断DATA是否为HIGH _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; //判断DATA是否为HIGH _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; //判断DATA是否为HIGH _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; //判断DATA是否为HIGH _delay_us(20); DDRB=0X81; PORTB&=~_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); DDRB=0X00; while((PINB&0X80)!=0X80) goto recheck; _delay_us(20); //1 DDRB=0X81; PORTB|=_BV(PB7); _delay_us(20); PORTB&=~_BV(PB0); _delay_us(40); PORTB|=_BV(PB0); _delay_us(20); _delay_ms(1000); } } }
|