📄 main.c
字号:
#include <msp430x16x.h>
#include"iic.h"
#include "general.h"
#include "7290_soft.h"
//unsigned char Int_7290 ; //用于储存P30上读入电平,中断时会变低,不能放在这里,不知为何
unsigned char p[8] = { 0x1f , 0x1f , 0x1f , 0x1f , 0x1f , 0x1f , 0x1f , 0x1f ,} ;
void Initsys()
{ unsigned char iq0 ;
BCSCTL1 &= ~XT2OFF ; //打开XT2振荡器,XT2OFF在PUC后为1,
//表示关闭
do
{
IFG1 &= ~ OFIFG ; //清除振荡器失效标志,OFIFG在PUC后为1,
//表示振荡器失效
for(iq0 = 0XFF ; iq0 > 0 ; iq0 --) ;//延时,等待XT2起振
}
while (( IFG1 & OFIFG ) != 0) ; //若OFIFG为1,表示振荡器失效,
// 继续循环,等待
BCSCTL2 =SELM_2 + SELS ; //选择MCLK ,SMCLK 为XT2
}
main()
{
int t ; // char t 时,t不能为0
int n = 0 ; //n表示已经输入了 n个数
WDTCTL = WDTPW +WDTHOLD ;
Initsys() ;
P1DIR |= 0x01 ;
P5DIR |= 0x10 ;
DelayMs (1000 ) ; //上电时感觉信号不稳定, 红灯会亮,复位后会显示数。延时后信号稳定,红灯不亮
InitIIC() ;
P1OUT &= ~0x01 ;
P5OUT &= ~0x10 ;
IIC_DIR &= ~BIT0 ; //P30 input
//Int_7290 = ( IIC_IN & BIT0 ) ;//读入P30电平,这句放在这里时编译无法通过
// zlg7290_control( 0 ,8 ,0 ,0 ) ;
while(1)
{
if( zlg7290_Int() )
{
// DelayMs ( 10 ) ;
//if( !zlg7290_Int() ) {break ;}
n++ ;
for( t = 1; t < 8; t++)
{
p[t - 1] = p[ t ] ;
}
p[7] = zlg7290_getkey() ;
for( t = 7; t >= 8 - n; t--)
{
zlg7290_control( t , p[ t ] ,0 ,0 ) ;
}
if( n > 8 )
{
n = 0 ;
zlg7290_clear() ;
}
DelayMs ( 1000 ) ;
P5OUT ^= 0x10 ;
}
}
}
//#define IIC_Delay_Value 100
//#define IIC_Delay_Value 5 ,不建议太短,有人说IIC_Delay()至少延时4微秒
//都可以显示一位数字
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -