📄 main.c
字号:
#include <msp430x14x.h>
#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;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -