?? lib.h
字號:
//************************************************************************/
// the function of defined by user list /
// /
//************************************************************************/
void LibSysClkInit(void);
void LibDelay(uint us);
void LibEepromInit(void);
void LibEepromErase(uint cmd,uint add);
void LibEepromProgWord(uint data,uint padd);
void LibEepromReProgWord(uint data,uint padd);
void LibEepromReProgByte(uchar data,uint add);
void LibPortInit(void);
void LibPORTBChg(void);
char LibGetKey(void);
void LibIsend(uchar adr);
void LibDsend(uchar asc);
void LibLCDInit(void);
void LibLCDSendChr(char CHAR[]);
void LibKeyAction(void);
void LibLCDNumChgPost(unsigned int num);
void LibLCDInfoDis(void);
void LibSCITransmit(uchar TransmitData);
uchar LibSCIRecive();
void LibPCSendMsg(char CHAR[]);
void LibPCNumChgPost(unsigned int num);
void LibPWM16Init(void);
void LibRTIInit(void);
void LibADInit(void);
void LibISConvEnd(void);
#define OSTimerInit() PIEH=0X2;
#define Lib_AlARM_START() PWME|=0x80;
#define Lib_AlARM_END() PWME&=0x7f,PTM=0B000;
#define Lib_LCD_lINE_CHG() LibIsend(192);
#define Lib_PC_LINE_CHG() LibSCITransmit(13);LibSCITransmit(10);
#define Lib_PA_INIT() PACTL=0b01010010;ICPAR=0B11;TCTL4=0XFF;PBCTL=0b01000010;PACN32=0;PACN10=0;
#define Lib_IS_CONV_STR() ATD0CTL5=0b10010000;//atd start
//************************************************************************/
// detail define of the function
//
//************************************************************************/
/*********************LibSysClk(void)***********************************/
void LibSysClkInit(void)
{
//REFDV=3;
//SYNR=7; //32M
REFDV=1;
SYNR=2; //24M
while(CRGFLG_LOCK==0);
CLKSEL=0X80;
}
/*************************************LibRTIInit()************************/
void LibRTIInit(void)
{
RTICTL=0b01110100; //48.8Hz
CRGINT_RTIE=1; //INT EN
}
/*********************LibPortInit(void)***********************************/
void LibPortInit(void)
{
////////////////////////
DDRB=0xFF; //led ofPORTB
PORTB=0Xff;
////////////////////////
DDRA=0XFF; //lcd port
DDRE=0XFF;
////////////////////////
DDRM=0XFF; //
//PTM=0B111;
PTM=0B000;
////////////////////////
DDRH=0X00; //
PPSH=0X2;
//PIEH=0X2;
TIE=0b100;
////////////////////////
DDRK=0XFF; // 33886 enable
PUCR=0XFF;
PORTK_BIT7=0;
///////////////////////
DDRJ=0X00; //keyboard input
PPSJ=0; //falling edge
PIEJ=0b00000000;//disable interrupt
PTJ =0b11000011;//no key pressed
}
/*--------------------------------LibPORTBChg(void)--------------------------------*/
void LibPORTBChg(void) //portb change
{
char *p;
char temp=1;
char PortSta[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
p=PortSta;
for(;;)
{
LibDelay(65355);
LibDelay(65355);
LibDelay(25355);
if(p>&PortSta[7])
{
temp=0;
}
if(p==&PortSta[0])
{
temp=1;
}
if(temp==1)
{
PORTB=*p;
p++;
}
else
{
p--;
PORTB=*p;
}
}
}
/*********************LibPWM16Init(void)***********************************/
void LibPWM16Init(void)
{
PWME=0; //disable pwm
PWMCTL_CON01=1; //combine pwm0 and pwm 1 CON23 low and CON01 high reverse
PWMCTL_CON23=1; //combine pwm0 and pwm 3 CON23 high and CON01 low forward
PWMCTL_CON45=1; //combine pwm0 and pwm 5 steer
PWMCTL_CON67=1; //combine pwm6 and pwm 7
PWMCLK=0b11110000; //select clock
PWMPRCLK=0b00000000;
PWMSCLA=4; // clock SA = clock A/2/100 = 20kHz, control infrared LED array
PWMSCLB=200; // clock SB = B clock/2/1 = 2MHz
PWMPOL=0Xff; //select polarity
PWMCAE=0X0; //select aligned
PWMPER01=2400; //program duty cycle and period
PWMDTY01=0;
PWMPER23=2400;
PWMDTY23=0;
PWMPER45=60000;
PWMDTY45=4485; //4120right;4850left +_440
PWMPER67=60000;
PWMDTY67=60000;
//PWME=0b00101010; //enable pwm channels PWME=0b00101010;
}
/***************************LibDelay(uint us)****************************/
void LibDelay(uint us) //delay time
{
uint cnt;
for(cnt=0;cnt<us;cnt++)
{
asm("nop");
}
}
/*********************************LibADInit(void)************************/
void LibADInit(void) // initialize AD
{
ATD0CTL2=0b11000000; //open adc and disenable interrupt
LibDelay(200); //wait clk steady
ATD0CTL3=0b01000100; //8 sequence
ATD0CTL4=0b01100101; //10 bit, 16 adclk,2M adclk
ATD0CTL5=0b10010000; //right algin, unsigned, once, chancel 0 start
////////////////////////////////////////////////
ATD1CTL2=0b11000000; //open adc and disenable interrupt
LibDelay(200); //wait clk steady
ATD1CTL3=0b00001000; //1 sequence
ATD1CTL4=0b10000010; //8 bit, 2 adclk,4M adclk
ATD1CTL5=0b10100000; //right algin, unsigned, continue, chancel 0 ,ATD1DR0
}
/*--------------------------------LibISConvEnd(void)--------------------------------*/
void LibISConvEnd(void)
{
while(ATD0STAT1!=0xff); //wait end
ExtBatteryPower=10*ATD0DR7;
}
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
#define ERA_VER 0x05 /* Verify all memory bytes of the EEPROM array are erased. If the array is erased,
the BLANK bit will set in the ESTAT register upon command completion.*/
#define PROG_A_WD 0x20 /* Program a word (two bytes).*/
#define SEC_ERA 0x40 /* Sector Erase Erase two words (four bytes) of EEPROM array.*/
#define MAS_ERA 0x41 /* Mass Erase Erase all of the EEPROM array.
A mass erase of the full array is only possible when EPDIS and EPOPEN are set.*/
#define SEC_REP 0x60 /* Sector Modify Erase two words of EEPROM, re-program one word.*/
/*----------------------------LibEepromInit(void)-----------------------*/
void LibEepromInit(void)
{
INITEE=0X09; //0x800-0x0fff,2048 -4092
ECLKDIV=0b01010010;
ECNFG=0B00000000;
while(ECLKDIV_EDIVLD==0);
}
/*------------------------LibEepromErase(uint cmd,uint add)--------------*/
void LibEepromErase(uint cmd,uint add)
{
while(EPROT_EPOPEN==0);
while(ESTAT_CCIF==0);
while(ESTAT_CBEIF==0);
switch(cmd)
{
case(SEC_ERA):
{
*((uint *)add)=0xffff;
ECMD=SEC_ERA;
ESTAT|=0X80;
while(ESTAT_CCIF==0);
}
case(MAS_ERA):
{
*((uint *)add)=0xffff;
ECMD=MAS_ERA;
ESTAT|=0X80;
while(ESTAT_CCIF==0);
}
}
}
/*-------------LibEepromProgWord(uint data,uint *padd)-----------------*/
void LibEepromProgWord(uint data,uint add,uchar cmd)
{
while(EPROT_EPOPEN==0);
while(ESTAT_CCIF==0);
while(ESTAT_CBEIF==0);
*((uint *)add)=data;
ECMD=cmd;
ESTAT|=0X80;
while(ESTAT_CCIF==0);
}
/*-------------LibEepromProgWord(uint data,uint *padd)-----------------*/
void LibEepromReProgWord(uint data,uint add)
{
uint addcop;
uint datasav;
uint addsav;
addcop=0xfffc&add;
if(addcop!=add)
{
datasav=*((uint *)(add-2));
addsav=add-2;
}
else
{
datasav=*((uint *)(add+2));
addsav=add+2;
}
LibEepromProgWord(data,add,SEC_REP);
LibEepromProgWord(datasav,addsav,PROG_A_WD);
}
/*-------------LibEepromProgByte(uint data,uint *padd)-----------------*/
void LibEepromReProgByte(uint data,uint add)
{
uint addselect=0;
addselect=0xfffe&add;
if(addselect==add)
{
data=data<<8;
data=(*((uint *)addselect)&0x00ff)|data;
}
else
{
data=(*((uint *)addselect)&0xff00)|data;
}
LibEepromReProgWord(data,addselect);
}
/*-------------LibEepromBufIn(uint data,uint *padd)-----------------*/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*----------------------------------LibIsend(uchar adr)----------------------------------*/
//PORTE_BIT2 rs
//PORTE_BIT3 e
//PORTA data
void LibIsend(uchar adr)//write instruction
{
PORTA=255;
PORTE_BIT2=0;
PORTE_BIT3=1;
PORTA=adr;
PORTE_BIT3=0;
LibDelay(8000);
}
/*----------------------------------LibDsend(uchar asc)----------------------------------*/
void LibDsend(uchar asc)//write asci
{
PORTA=255;
PORTE_BIT2=1;
PORTE_BIT3=1;
PORTA=asc;
PORTE_BIT3=0;
LibDelay(6000);
}
/*----------------------------------LibLCDInit(void)----------------------------------*/
void LibLCDInit(void)
{
LibIsend(1); //clear display
LibIsend(56); //two smoll font
//LibIsend(2); //return home
///////////////////////////
//LibIsend(4); //cursor move left
LibIsend(6); //cursor move right
//LibIsend(5); //font move left
//LibIsend(7); //font move right
/////////////cursor and display move//////////////
//LibIsend(16); //cursor move left
//LibIsend(20); //cursor move right
//LibIsend(24); //cursor and display move left
//LibIsend(28); //cursor and display move right
///////////////////////////
//LibIsend(12); //no cursor
//LibIsend(14); //cursor static
LibIsend(15); //cursor flash
////////////////////////////
//LibIsend(52); //single big font
//LibIsend(1);
LibIsend(128); //光標移至行首
LibIsend(1);
}
/*----------------------------------LibLCDSendChr(char CHAR[])----------------------------------*/
void LibLCDSendChr(char CHAR[])
{
char *p;
p=CHAR;
//LineChg();
for(;;)
{
LibDsend(*p);
p++;
if(*p=='/')
{
break;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -