No.1952 作者:东海飘萍客 邮件:axiaxi520@sohu.com ID:6050 登陆:1次 文章数:42篇 最后登陆IP: 最后登陆:2001/9/18 15:50:00 注册:2001/9/18 15:50:00 财富:154 发帖时间:2001/10/20 10:21:00 发贴者IP:61.160.222.112 标题:东海飘萍客:C51编程:各位大虾,小弟发现一个奇怪的问题,我已无法解决,想请各位大虾帮帮忙,进来看一下,点拨一二! 摘要:No.1952C51编程:各位大虾,小弟发现一个奇怪的问题,我已无法解决,想请各位大虾帮帮忙,进来看一下,点拨一二! #include <reg51.h> #include <intrins.h> #include <string.h> #define uchar unsigned char #define uint unsigned int sbit SDA=P1^5;sbit SCL=P1^4; sbit p06=P0^6;sbit p05=P0^5; sbit p04=P0^4;sbit p03=P0^3; sbit p02=P0^2;sbit p01=P0^1; sbit p00=P0^0;sbit bell=P2^5; sbit led_yellow=P2^2;sbit led_red=P2^1; uchar mode; void delay(uint delay_time); //延时delay_timeMS void I_start(void); void I_stop(void); bit I_clock(void); bit I_send(uchar I_data); uchar I_receive(void); void E_read_address(uchar Address,uchar *p,uchar R_size); void E_write_address(uchar Address,uchar *p,uchar W_size); void bellx(uchar bell_count); void delay_us(uint delay_time); bit Input_Keyboard(uchar *p2); uchar demand_keyboard(); uchar scan_keyboard(); /*键盘扫描*/ void main(void) { bit temp; uchar Ram_Key[8],Input_Key[8]; SCL=0; I_stop(); delay(100); E_read_address(0x01,Ram_Key,0x06); delay(100); led_red=0; led_yellow=1; delay(100); Input_Keyboard(Input_Key); delay(100); if(Input_Key[0]==0x30) bellx(3); else { bellx(1); led_red=0; led_yellow=0; } delay(100); temp=strncmp(Ram_Key,Input_Key,8); if(temp==0) bellx(3); else { bellx(1); led_red=1; led_yellow=1; } while(1); } /*键盘扫描子程序,返回值为0,代表没扫描到按键,返回值为1,正确。输入的密码放入 board_key[8]里,结束符为ox0x0c.*/ bit Input_Keyboard(uchar *p2) { uchar i,temp; bit flag; uchar temp1[16]; uchar *p1; p1=temp1; for(i=0;i<16;i++) { *p1++=0; } p1=temp1; for(i=0;i<16;i++) { temp=demand_keyboard(); switch(temp) { case 0: return 0; case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: *p1++=temp; break; case 10:flag=1; *p1=0x0c; break; case 11:*p1++=0; break; case 12:p1--; *p1=0; break; } if(flag) break; } p1=temp1; for(i=0;i<8;i++) { *p2=*p1++; *p2<<=4; *p2&=0xf0; *p2+=*p1++; p ......
>>返回讨论的主题
|