|
刚学用C语言编程,请各位师傅、前辈帮我看看这段程序。我一直编译不过去!!谢谢了!!<br /> #include <reg52.h><br /> #include <lcd16*2.h><br /> void LCD_instruction();<br /> void LCD_data(unsigned char *display);<br /> void checkbusy(); <br /> void LcdDataLatch(unsigned char lcddata) <br /> void cls(); <br /> void inital(void); <br /> unsigned char ReadStatus(void);<br /> void delay(void); <br /> void delaykey();<br /> void ScanKey();<br /><br /> unsignde char display[8];<br /> unsign char second;<br /> unsign char minite;<br /> unsign char hour;<br /> unsign char temp;<br /><br /> sbit P31=P3^1;<br /> sbit P32=P3^2;<br /> sbit P33=P3^3;<br /> sbit P34=P3^4;<br /> sbit P36=P3^6;<br /> sbit P37=P3^7;<br /> sbit RS=P1^1;<br /> sbit R_W=P1^2;<br /> sbit ENABLE=P1^0;<br /> sbit Lineout0=P1^4;<br /> sbit Lineout1=P1^5;<br /> sbit Linein0=P1^6;<br /> sbit Linein1=P1^7;<br /> unsigned bdata getkey=0;<br /> sbit key_left=getkey^0;<br /> sbit key_right=getkey^1;<br /> sbit key_up=getkey^2;<br /> sbit key_down=getkey^3;<br /> sbit key_int0=getkey^4;<br /> <br /><br /><br /> void main<br /> {<br /> TMOD=0X02;<br /> TH0=0X06;<br /> TL0=0X06;<br /> EA==1;<br /> TR0=1;<br /> ET0=1;<br /> <br /> while(1)<br /> {<br /> Scankey(); <br /> }<br /><br /> }<br /><br /><br /><br /> void ScanKey()<br /> {<br /> int flag=0;<br /> getkey=0;<br /> Lineout0=0;//扫描key_up,key_left<br /> Lineout1=1;<br /> Linein0=1;<br /> Linein1=1;<br /> delaykey();<br /> if(Linein0==0)<br /> { key_up=1;<br /> flag=1;<br /> while(flag)<br /> {<br /> if(Linein1==0)<br /> { key_left=1;<br /> sceond++<br /> if(sceond==60)sceond=0;<br /> }<br /> Lineout0=1; //扫描key_down,key_right<br /> Lineout1=0;<br /> Linein0=1;<br /> Linein1=1;<br /><br /> delaykey();<br /> if(Linein0==0)<br /> { key_down=1;<br /> minite++<br /> if(minite==60)minite=0;<br /> }<br /> if(Linein1==0)<br /> { key_right=1;<br /> hour++<br /> if(hour==60)hour=0;<br /> }<br /> Lineout0=0;<br /> Lineout1=1;<br /> Linein0=1;<br /> Linein1=1;<br /> if(Linein0==0)//扫描key_up<br /> flag=0;<br /> disp();<br /> <br /><br /> }//end while<br /> }//end if<br /> // return getkey;//返回键值 */<br /> }<br /><br /> void to(void)interrupt 1 using 0<br /><br /> {<br /> temp++;<br /> if(temp==4000)<br /> {<br /> temp=0;<br /> second++<br /> <br /> if(second==60)<br /> {<br /> second==0;<br /> minite++;<br /> <br /> if(minite==60)<br /> {<br /> minite=0;<br /> hour++;<br /> <br /> if(hour==24)<br /> {<br /> hour=0;<br /> }<br /> }<br /> }<br /> } <br /> <br /> <br /> disp(); <br /> }<br /><br /> <br /><br /><br /> void disp() // 显示<br /><br /> {<br /> unsigned char i,j;<br /> intinal();<br /> cls();<br /> checkbusy();<br /> lcd_instruction(0x80); <br /> lcd_data(display);<br /> for(i=0;i<3;i++)<br /> for(j=0;j<250;j++)<br /> delay();<br /> display[0]=second%10+0x30; <br /> display[1]=second/10+0x30; <br /> display[2]=0X3A; <br /> display[3]=minite%10+0x30; <br /> display[4]=minite/10+0x30; <br /> display[5]=0x3A; <br /> display[6]=hour%10+0x30; <br /> display[7]=hour/10+0x30;<br /><br /> }<br /><br /> void intinal()<br /> {<br /> unsigned char data1;<br /> data1=0x38;//A,#00111000B<br /> Write_instruction(data1);<br /> data1=0x0c;//A,#00001100B<br /> Write_instruction(data1);<br /> data1=0x06;//A,#00000110B<br /> Write_instruction(data1);<br /><br /> }<br /><br /> <br /> void cls(void)<br /> {<br /> Write_instruction(0x01);<br /> } <br /><br /><br /> void CheckBusy()<br /> {<br /> unsigned char j=0;<br /> <br /> ENABLE=0;<br /> R_W=1;<br /> RS=0;<br /> ENABLE=1;<br /> for(j=0;j<8;j++)<br /> DELAY();<br /> }<br /><br /><br /> void lcd_instruction(unsigned char data1)<br /> {<br /> CheckBusy();<br /> ENABLE=0;<br /> R_W=0;<br /> RS=0;<br /> ENABLE=1;<br /> LcdDataLatch(data1);<br /> ENABLE=0;<br /> }<br /><br /> void lcd_data(display)<br /> {<br /> unsigned char i=0;<br /> while(i<8)<br /> {<br /> WriteLCDData(display);<br /> i++;<br /> }<br /> }<br /><br /> void WriteLCDData(unsigned char data1)<br /> {<br /> CheckBusy();<br /> ENABLE=0;<br /> R_W=0;<br /> RS=1;<br /> ENABLE=1;<br /> <br /> LcdDataLatch(data1);<br /> ENABLE=0;<br /> } <br /><br /><br /> void delay()<br /> {<br /> unsigned char i,j;<br /> for(i=0;i<3;i++)<br /> for(j=0;j<248;j++)//j<248<br /> ;<br /> }<br /> <br /> void LcdDataLatch(unsigned char lcddata)<br /> {<br /> unsigned char i=10;<br /> P2=0;<br /> P2=0x60; <br /> P0=lcddata;<br /> while(i) i--;<br /> P2=0;<br /> } |
|