水是冰D泪 水是冰D泪
关注数: 7 粉丝数: 32 发帖数: 477 关注贴吧数: 13
实现6位拨号与显示功能、、求大神支招、、小吕纸快崩溃了、、 程序基本写好了,下载程序就是实现不了号码的移位、、很是苦恼、、求大神支招 #include"reg51.h" sbit P34=P3^4; sbit P35=P3^5; sbit P36=P3^6; sbit P37=P3^7; sbit led=P2^0; unsigned char keyval; unsigned char LED_seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //P2 unsigned char LED_bit[6]={0x01,0x02,0x04,0x08,0x10,0x20}; //P0 void delay(void) { unsigned long int i,j; for(i=0;i<100;i++) for(j=0;j<60;j++); } //数码管显示 void display(unsigned char *a) { static unsigned char i=0,j,k,num,LED_buf[7]; if(*a!=0) { for(j=1;j<7;j++) { LED_buf[j]=*a%10; *a=*a/10; if(*a==0) break; } } P0=0; if(j!=0||num!=0) { P2=LED_seg[LED_buf[i+1]]; P0=LED_bit[i]; i++; if((j==0&&num==1)||i==(j+num)) i=0; if((j+num)==7) {i=0;j=0;num=0;for(k=0;k<7;k++)LED_buf[k]=0;} } } void time0() interrupt 1 using 1 { TR0=0; led=~led; P3=0xf0; if((P3&0xf0)!=0xf0) delay(); if((P3&0xf0)!=0xf0) { P3=0xfe; if(P34==0) keyval=0; if(P35==0) keyval=1; if(P36==0) keyval=2; if(P37==0) keyval=3; P3=0xfd; if(P34==0) keyval=4; if(P35==0) keyval=5; if(P36==0) keyval=6; if(P37==0) keyval=7; P3=0xfb; if(P34==0) keyval=8; if(P35==0) keyval=9; } TL0=(65536-5000)%256; TH0=(65536-5000)/256; TR0=1; } void main(void) { unsigned char i=0; TMOD=0X01;//定时器工作方式1 TL0=(65536-5000)%256; TH0=(65536-5000)/256; TR0=1; ET0=1; EA=1; keyval=0x00; while(1) { LED_bit[i+1]=LED_bit[i]<<1; P0=LED_bit[i+1]; i++; if(i==6) i=0; display(&keyval); } }
1 下一页