📄 shizhong.c
字号:
#include "msp430x22x4.h"
void keyprocess(void);
//#define uchar unsigned char;
//#define uint unsigned int;
char a[]="01234567890";
char *p1=a+2,*p2=a,*p3=a,*p4=a,*p5=a,*p6=a,*p7=a,*p8=a,*p9=a,*p10=a,*p11=a,*p12=a,*p13=a,*p14=a;
void delay(void) //延时子程序
{
int z;
for(z=400;z>0;z--);
}
void write_com(unsigned int COM) //写指令程序
{
P3OUT&=~BIT0;
P4OUT=COM;
delay(); //5ms
P3OUT|=BIT1;
delay(); //5ms
P3OUT&=~BIT1;
}
void write_data(int DAT) //写数据程序
{
P3OUT|=BIT0;
P4OUT=DAT;
delay();
P3OUT|=BIT1;
delay(); //5ms
P3OUT&=~BIT1;
}
void init()
{
write_com(0x38); //显示模式设置
write_com(0x0c); //显示及光标设置
write_com(0x06);
write_com(0x01); //清屏
//write_com(0x0c);
}
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_VECTOR1(void) //I/O口中断
{
delay();
keyprocess();
//_BIC_SR_IRQ(LPM3_bits+GIE);
P1OUT=0x00;
P1IFG=0X0;
}
void keyprocess(void) //键盘查询
{
P1OUT=0x0e;
if((P1IN&0xf0)==0xe0)p4++;
if(p4==(a+10))
{
p4=a;
}
else if((P1IN&0xf0)==0xd0)p6++;
if(p6==(a+10)) p6=a,p5++;
if(p5==(a+1)&&p6==(a+2))
{
p5=a;
p6=a;
}
else if((P1IN&0xf0)==0xb0)p8++;
if(p8==(a+10))
{
p8=a;
p7++;
}
if(p7==(a+3)&&p8==a)
{
p7=a;
p8=a;
}
else if((P1IN&0xf0)==0x70)p10++;
if(p10==(a+10)) p10=a, p9++;
if(p9==(a+2)&&p10==(a+4))
{
p9=a;
p10=a;
}
P1OUT=0x0d;
if((P1IN&0xf0)==0xe0)p12++;
if(p12==(a+10)) p12=a, p11++;
if(p12==a&&p11==(a+6))
{
p12=a;
p11=a;
}
else if((P1IN&0xf0)==0xd0)p14++;
if(p14==(a+10)) p14=a, p13++;
if(p13==(a+6)&&p14==a)
{
p13=a;
p14=a;
}
/*else if((P1IN&0xf0)==0xb0)*p1++;
else if((P1IN&0xf0)==0x70)*p1++;
else
{
P1OUT=0x0b;
if((P1IN&0xf0)==0xe0)*p1++;
else if((P1IN&0xf0)==0xd0)*p1++;
else if((P1IN&0xf0)==0xb0)*p1++;
else if((P1IN&0xf0)==0x70)*p1++;
else
{
P1OUT=0x07;
if((P1IN&0xf0)==0xe0)*p1++;
else if((P1IN&0xf0)==0xd0)P4OUT=0x0d;
else if((P1IN&0xf0)==0xb0)P4OUT=0x0e;
else if((P1IN&0xf0)==0x70)P4OUT=0x0f;
}
}*/
}
void main() //主程序
{
// int num;
WDTCTL=WDTPW+WDTHOLD; //关看门狗
BCSCTL1 =CALBC1_1MHZ; //设定DCO为1MHZ
DCOCTL =CALBC1_1MHZ;
TACTL=TASSEL_1+TACLR;
P1IE =0;
P1IES =0;
P1IFG =0;
P1DIR=0x00;//P1口为输入
P1SEL=0;// P1口为通用I/O口
P1DIR=0x0f;//低四位输出
P1OUT=0x00;//输出低电平
P1IE =0xf0;//P1.0设置为中断
P1IES =0xf0;//上升沿触发
P4SEL=0;
P4DIR=0XFF;
// P4OUT=0;
P3SEL=0;
P3DIR|=BIT0+BIT1;//P3.0>>RS; P3.1>>E
TACCR0 = 32768; //计数值为32768个ACLK周期
TACTL |=MC0;
TACCTL0 |=CCIE;
_BIS_SR(GIE);
delay();
init();
while(1)
{
write_com(0x80+0x03);
delay();
write_data(*p1);
write_com(0x80+0x04);
delay();
write_data(*p2);
write_com(0x80+0x05);
delay();
write_data(*p3);
write_com(0x80+0x06);
delay();
write_data(*p4);
write_com(0x80+0x07);
delay();
write_data(' ');
write_com(0x80+0x08);
delay();
write_data(*p5);
write_com(0x80+0x09);
delay();
write_data(*p6);
write_com(0x80+0x0a);
delay();
write_data(' ');
write_com(0x80+0x0b);
delay();
write_data(*p7);
write_com(0x80+0x0c);
delay();
write_data(*p8);
write_com(0x80+0x44);
delay();
write_data(*p9);
write_com(0x80+0x45);
delay();
write_data(*p10);
write_com(0x80+0x46);
delay();
write_data(':');
write_com(0x80+0x47);
delay();
write_data(*p11);
write_com(0x80+0x48);
delay();
write_data(*p12);
write_com(0x80+0x49);
delay();
write_data(':');
write_com(0x80+0x4a);
delay();
write_data(*p13);
write_com(0x80+0x4b);
delay();
write_data(*p14);
// for(num=0;num<1;num++)
//{
//write_com(0x18);
//delay();
//}
}
}
#pragma vector = TIMERA0_VECTOR //ccr0中断服务
__interrupt void ta0_isr(void)
{
p14++;
if(p14==(a+10))
{
p14=a;
p13++;
}
if(p13==(a+6))p14=a;
if(p13==(a+6)&&p14==a)
{
p13=a;
p14=a;
p12++;
}
if(p12==(a+10))
{
p12=a;
p11++;
}
if(p11==(a+6))p12=a;
if(p12==(a+10)&&p11==(a+6))
{
p12=a;
p11=a;
p10++;
}
if(p10==(a+10))
{
p9++;
p10=a;
}
if(p9==(a+2))p10=a;
if(p9==(a+2)&&p10==(a+4))
{
p9=a;
p10=a;
p11=a;
p12=a;
p13=a;
p14=a;
p8++;
}
if(p8==(a+10))
{
p8=a;
p7++;
}
if(p7==(a+3))p8=a;
if(p7==(a+3)&&p8==(a+1))
{
p7=a;
p8=a;
p6++;
}
if(p6==(a+10))
{
p6=a;
p5++;
}
if(p5==(a+1))p6=a;
if(p5==(a+1)&&p6==(a+2))
{
p5=a;
p6=a;
p4++;
}
if(p4==(a+10))
{
p1=(a+2);
p2=a;
p3=a;
p4=a;
p5=a;
p6=a;
p7=a;
p8=a;
p9=a;
p10=a;
p11=a;
p12=a;
p13=a;
p14=a;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -