?? 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 + -