|
我现在做一个键盘设计,怎样能把键盘上所表示的字符发送给电脑让电脑显示出来!这是我的程序,是这样些写吗?如果不对,应该怎样写才对!
#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);
}
}
}
-----此内容被cjb114b于2007-05-01,15:19:35编辑过 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|