📄 main.c
字号:
#include<msp430x16x.h>
#include "12864.h"
#include "delay.h"
#include "chinese.h"
#define uchar unsigned char
#define uint unsigned int
int temp=0;
char flag=0;
void Init_clock(void)
{
unsigned char i=0;
BCSCTL1=0x00; //打开XT2振荡器
DCOCTL=0x00;
do
{IFG1&=~ OFIFG; //清除振荡器失效标志
for(i=0Xff;i>0;i--);// 延时,等待XT2起振
}
while((IFG1&OFIFG)==OFIFG);// 判断XT2是否起振
BCSCTL2|=SELS; //SMCLK的时钟源是高速晶振8MHZ
}
void Init_Port(void)
{
P4DIR = 0xff; //P4为数据输入
P4OUT = 0x00;
P5DIR = 0xff; //控制口为输出
P5OUT = 0x00;
}
/*------------------初始化LCD屏--------------------------*/
void Init_lcd()
{
display_off(); //显示关
//Set_Page(0); //设置页地址
//Set_Line(0); //设置起始行
//Set_Column (0); //设置起始列
display_on(); //显示开
}
void Set_TimerA(void)
{
CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。
CCR0 = 40000; //捕获/比较控制寄存器CCR0初值为40000。
TACTL = TASSEL_2 + MC_1; //设置定时器A控制寄存器TACTL,使时钟源选择为SMCLK辅助时钟。
} //增计数模式
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗WDT,不使用内部看门狗定时器。
Init_clock();
Init_Port();
Init_lcd();
_EINT();
clear_lcd();
CS1H;CS2L; //选择左屏
show_char(0,0,one);
show_char(0,8,two);
show_char(0,16,three);
show_char(0,24,four);
show_char(0,32,five);
show_char(0,40,six);
show_char(0,48,seven);
show_char(0,56,eight);
Set_TimerA();
/*CS1L;CS2H;
show_char(0,0,nine);
show_char(0,8,zero);
show_char(0,16,decimal);
show_char(0,24,colon);
show_hanzi(2,0,hu);
show_hanzi(2,16,yang);*/
while(1);
}
//定时器A 中断服务程序区
//在液晶上显示秒钟出来
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
CCR0 = 40000;
temp++; //每5ms定时器中断一次
if(temp<1800)
{
if(temp%200==0)
{
flag++;
show_char(2,24,Transform(flag));
if(flag >= 9)flag=-1;
}
}
else temp=-1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -