打印

这是我写的单片机发送数据让电脑显示程序,是通过PS2来通信

[复制链接]
2270|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cjb114b|  楼主 | 2007-5-1 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我写的程序,我想显示一个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); 
         } 
     } 
  } 

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

7

帖子

0

粉丝