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; } }