www.pudn.com > TESTLEDAAA.rar > main.c


#include   
#include "RT12864_LCD.h" 
#include "declare.h" 
unsigned char flag,tmptype,tmpcmd,tmpdat1,tmpdat2,tmpi,tmpj; 
unsigned char rebyte[4]; 
unsigned char tmpn=0; 
void main(void) 
{ 
/* 
	unsigned char *str1,*str2,*str3,*str4,*str5; 
	str1="国外公司申请难易程度排行由易到难"; 
	str2="RS-PA1 RW-PA2"; 
	str3="EN-PA3 DAT-PB0~7"; 
	str4="Www.AltKKs.Com"; 
	str5="接线表"; 
*/	 
/*系统时钟配置 
	WDTCTL = WDTPW + WDTHOLD; 
	BCSCTL1 &= ~XT2OFF;							// 启用XT2 
	while((IFG1&OFIFG)!=0) 
	{ 
		IFG1&=~OFIFG; 
		delay_nus(128); 
	} 
	BCSCTL2 = SELM_2 + SELS + DIVS_3;			// MCLK = XT2 = 8M SMCLK = 2M 
	delay_nus(20000);							// 等待时钟建立 
系统时钟配置结束*/ 
  volatile unsigned int iq0; 
  WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer  
  BCSCTL1 &= ~XT2OFF; //启动时钟2,ACLK不分频,32768k 
  do 
   { 
     IFG1 &=~ OFIFG; 
     for(iq0 = 0xff;iq0 > 0;iq0--); 
   } 
  while ((IFG1&OFIFG) != 0); 
  BCSCTL2 = SELM_2 + SELS + DIVS_2;//MCLK = XT2 = 8M SMCLK = 2M 
                  
  delay_nus(20000);                   // Delay for crystal stabilization 
/*系统时钟配置结束*/ 
	P1DIR |= 0x01;								// Set P1.0 to output direction 
	LCD_DATA_DIR |= LCD_DATA;					//set output 0xff 
	CONTROL_DIR |= LCD_RS | LCD_EN | LCD_RW;	//设置控制输出 
 
  /*USART0异步通讯初始化*/ 
  P3DIR |= 0x10;   //P3.4输出,其他输入 
  P3SEL |= 0x30;   //P3.4,5为异步通讯口USART0,其他为普通IO 
  P3OUT = 0x00;    //485处于接收状态 
  ME1 |= UTXE0 + URXE0;                     // Enabled USART0 TXD/RXD 
  U0CTL |= PENA + PEV + CHAR;               // 校验允许,偶校验,8-bit character 
  U0TCTL |= SSEL1;                          // SMCLK=2M 
  U0BR0 = 0x68;                             // 波特率 19200 
  U0BR1 = 0x00;                             // 
  U0MCTL = 0x00;                            // 调整波特率 
  UCTL0 &= ~SWRST;                          // Initialize USART state machine 
  IE1 |= URXIE0;  
  	 
	LCD_Init(); 
    _EINT();       //开总中断	 
     
	while(1) 
	{ 
		P1OUT ^= 0x01; 
		/* 
		ST7920_SendCmd(0x01);		//display clear 
		delay_nms(1000); 
		LCD_WriteString(2,1,str1); 
		delay_nms(4000); 
		ST7920_SendCmd(0x01);		//display clear 
		LCD_WriteString(2,0,str5); 
		LCD_WriteString(0,1,str2); 
		LCD_WriteString(0,2,str3); 
		LCD_WriteString(0,3,str4); 
		delay_nms(4000); 
		*/ 
		if(flag==9) 
		{ 
		tmptype=rebyte[0]; 
		tmpcmd=rebyte[1]; 
		tmpdat1=rebyte[2]; 
		tmpdat2=rebyte[3]; 
		switch(tmptype) 
		{ 
		  case 0: 
		    { 
		      ST7920_SendCmd(tmpcmd); 
		      break; 
		    } 
		  case 1: 
		    { 
		      ST7920_SendData(tmpdat1);		       
		      break; 
		    } 
		  case 2: 
		    { 
		      ST7920_SendCmd(tmpcmd); 
		      ST7920_SendData(tmpdat1);		       
		      break; 
		    } 
		  case 3: 
		    { 
		      ST7920_SendCmd(tmpcmd); 
		      ST7920_SendData(tmpdat1);		       
		      ST7920_SendData(tmpdat2);				       
		      break; 
		    } 
		  case 4: 
		    { 
		      ST7920_SendData(tmpdat2); 
		      ST7920_SendData(tmpdat1);		       
		      break; 
		    }		 
		  case 5: 
		    { 
		      for(tmpi=0;tmpi<32;tmpi++) 
		        { 
		          ST7920_SendCmd(0x34); 
		          ST7920_SendCmd(0x80+tmpi); 
		          ST7920_SendCmd(0x80); 
		          ST7920_SendCmd(0x30); 
		          for(tmpj=0;tmpj<16;tmpj++) 
		            { 
		              ST7920_SendData(tmpcmd); 
		              ST7920_SendData(tmpcmd); 
		            } 
		        } 
		      ST7920_SendCmd(0x36);  
		      break; 
		    } 
		  case 6: 
		    { 
    		      LCD_DrawPoint(tmpdat1,tmpdat2,tmpcmd); 
		      break; 
		    }			    		    		    		        		     
		  default: 
		    { 
		      ST7920_SendCmd(0x30); 
		      ST7920_SendCmd(0x01);		       
		      break; 
		    } 
		}		    		   
		flag=0; 
		} 
		delay_nms(1000); 
	} 
} 
 
#pragma vector = UART0RX_VECTOR 
__interrupt void usart0_rx (void) 
{ 
rebyte[tmpn] = RXBUF0; 
tmpn++; 
if(tmpn == 4) 
{ 
tmpn = 0; 
flag = 9; 
} 
}