马潮老师,请帮帮忙!怎样能把键盘上所表示的字符发送给电脑让电脑显示出来?
我现在做一个键盘设计,怎样能把键盘上所表示的字符发送给电脑让电脑显示出来!这是我的程序,是这样些写吗?如果不对,应该怎样写才对!#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接CLKPB7接DATA
int main(void)
{
DDRB=0X00;
DDRC=0X00; //PCIN
PORTC=0XFF;
while(1)
{
while(1)
{
recheck:
DDRB=0X00;
while((PINB&0X01)!=0X00); //判断CLK是否为LOW
_delay_us(50);
if((PINB&0X01)!=0X01)//判断CLK是否为HIGH
gotorecheck;
while((PINB&0X80)!=0X80) gotorecheck; //判断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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;//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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck; //判断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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck; //判断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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck;
_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) gotorecheck; //判断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) gotorecheck; //判断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) gotorecheck; //判断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) gotorecheck; //判断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) gotorecheck; //判断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) gotorecheck;
_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编辑过 实在看不下去。你把这个程序彻底望掉,老老实实从基础开始学。
页:
[1]