?? lpclib.c
字號:
IO0CLR=0x00000020; //寫入0
}
void Hd3_H(void)
{
//IO0SET 0000 0000 0000 0000 0000 0000 0X00 0000
IO0SET=0x00000040; //寫入1
}
void Hd3_L(void)
{
//IO0SET 0000 0000 0000 0000 0000 0000 0X00 0000
IO0CLR=0x00000040; //寫入1
}
void EN_HD3(void)
{
//IO0SET 0000 0000 0000 0000 0000 0000 X000 0000
IO0SET=0x00000080; //寫入1
}
void CLR_HD3(void)
{
//IO0SET 0000 0000 0000 0000 0000 0000 X000 0000
IO0CLR=0x00000080; //寫入1
}
void EN_HD2(void)
{
//IO1SET 0000 000X 0000 0000 0000 0000 0000 0000
IO1SET=0x01000000; //寫入1
}
void CLR_HD2(void)
{
//IO1SET 0000 000X 0000 0000 0000 0000 0000 0000
IO1CLR=0x01000000; //寫入1
}
//-----------------------------------------------------------------------------------------------------
//磁頭使能
//void CS_HD (void)
//------------------------------------------------------------------------------------------------------
void CS_HD (void)
{
if(FLAG_TRACK3==1)EN_HD3();
else CLR_HD3();
if(FLAG_TRACK2==1)EN_HD2();
else CLR_HD2();
}
//----------------------------------------------------------------------------------------------------
//打開讀LED燈
//void LED_R_ON (void)
//----------------------------------------------------------------------------------------------------
void LED_R_ON (void)
{
//IO0SET 0000 0000 00X0 0000 0000 0000 0000 0000
IO0SET=IO0SET|0x00200000; //寫入1
}
//----------------------------------------------------------------------------------------------------
//關閉讀LED燈
//void LED_R_OFF (void)
//----------------------------------------------------------------------------------------------------
void LED_R_OFF (void)
{
//IO0SET 0000 0000 00X0 0000 0000 0000 0000 0000
IO0CLR=IO0CLR|0x00200000; //寫入0
}
//----------------------------------------------------------------------------------------------------
//打開讀LED燈
//void LED_W_ON (void)
//----------------------------------------------------------------------------------------------------
void LED_W_ON (void)
{
//IO0SET 0000 0000 0X00 0000 0000 0000 0000 0000
IO0SET=IO0SET|0x00400000; //寫入1
}
//----------------------------------------------------------------------------------------------------
//關閉讀LED燈
//void LED_W_OFF (void)
//----------------------------------------------------------------------------------------------------
void LED_W_OFF (void)
{
//IO0SET 0000 0000 0X00 0000 0000 0000 0000 0000
IO0CLR=IO0CLR|0x00400000; //寫入1
}
//----------------------------------------------------------------------------------------------------
//打開錯誤LED燈
//void LED_ERR_ON (void)
//----------------------------------------------------------------------------------------------------
void LED_ERR_ON (void)
{
//IO1SET 0000 X000 0000 0000 0000 0000 0000 0000
IO1SET=IO1SET|0x08000000; //寫入1
}
//----------------------------------------------------------------------------------------------------
//關閉錯誤LED燈
//void LED_ERR_OFF (void)
//----------------------------------------------------------------------------------------------------
void LED_ERR_OFF (void)
{
//IO1SET 0000 X000 0000 0000 0000 0000 0000 0000
IO1CLR=IO1CLR|0x08000000; //寫入0
}
//-----------------------------------------------------------------------------------------------------
//打開蜂鳴器
//void Beep_ON (void)
//-----------------------------------------------------------------------------------------------------
void Beep_ON (void)
{
//IO1SET 0000 0000 0000 X000 0000 0000 0000 0000
IO1SET=IO1SET|0x00080000; //寫入1
}
//-----------------------------------------------------------------------------------------------------
//關閉蜂鳴器
//void Beep_OFF (void)
//-----------------------------------------------------------------------------------------------------
void Beep_OFF (void)
{
//IO1SET 0000 0000 0000 X000 0000 0000 0000 0000
IO1CLR=IO1CLR|0x00080000; //寫入0
}
//-----------------------------------------------------------------------------------------------------
//讀CPD信號
//unsigned char R_CPD (void)
//-----------------------------------------------------------------------------------------------------
unsigned char R_CPD (void)
{
//IO0PIN 0000 0000 0000 0X00 0000 0000 0000 0000
return ((unsigned char)((IO0PIN&0x00040000)>>18));
}
//-----------------------------------------------------------------------------------------------------
//讀磁道1信號
//unsigned char R_HD1 (void)
//-----------------------------------------------------------------------------------------------------
unsigned char R_HD1 (void)
{
//IO1PIN 0000 0000 00x0 0000 0000 0000 0000 0000
return ((unsigned char)((IO1PIN&0x00200000)>>21));
}
//-----------------------------------------------------------------------------------------------------
//讀磁道2信號
//unsigned char R_HD2 (void)
//-----------------------------------------------------------------------------------------------------
unsigned char R_HD2 (void)
{
//IO1PIN 0x00 0000 0000 0000 0000 0000 0000 0000
return ((unsigned char)((IO1PIN&0x40000000)>>30));
}
//-----------------------------------------------------------------------------------------------------
//讀磁道3信號
//unsigned char R_HD3 (void)
//-----------------------------------------------------------------------------------------------------
unsigned char R_HD3 (void)
{
//IO1PIN 00x0 0000 0000 0000 0000 0000 0000 0000
return ((unsigned char)((IO1PIN&0x20000000)>>29));
}
//-----------------------------------------------------------------------------------------------------
//打開寫卡中斷
//void EN_W_INT(void)
//-----------------------------------------------------------------------------------------------------
void EN_W_INT(void)
{
VICIntEnable =(1<<14); //使能EINT0
VICIntEnable =(1<<15); //使能EINT1
CLR_R_INT(); //關讀卡中斷
}
//-----------------------------------------------------------------------------------------------------
//關閉寫卡中斷
//void CLR_W_INT(void)
//-----------------------------------------------------------------------------------------------------
void CLR_W_INT(void)
{
VICIntEnClr =(1<<14); //關EINT0
VICIntEnClr =(1<<15); //關EINT1
}
//-----------------------------------------------------------------------------------------------------
//打開串口中斷
//void EN_W_INT(void)
//-----------------------------------------------------------------------------------------------------
void EN_UART1_INT(void)
{
VICIntEnable =(1<<7); //使能UART0
}
//-----------------------------------------------------------------------------------------------------
//關閉串口中斷
//void CLR_W_INT(void)
//-----------------------------------------------------------------------------------------------------
void CLR_UART1_INT(void)
{
VICIntEnClr =(1<<7); //關UART0
}
//-----------------------------------------------------------------------------------------------------
//打開讀卡中斷
//void EN_R_INT(void)
//-----------------------------------------------------------------------------------------------------
void EN_R_INT(void)
{
VICIntEnable =(1<<16); //使能EINT2;
VICIntEnable =(1<<17); //使能EINT3;
VICIntEnable =(1<<5); //使能TIMER1捕獲中斷`
CLR_W_INT(); //關寫卡中斷
}
//-----------------------------------------------------------------------------------------------------
//關閉讀卡中斷
//void CLR_R_INT(void)
//-----------------------------------------------------------------------------------------------------
void CLR_R_INT(void)
{
VICIntEnClr =(1<<16); //關EINT2;
VICIntEnClr =(1<<17); //關EINT3;
VICIntEnClr=(1<<5); //關TIMER1捕獲中斷`
}
//----------------------------------------------------------------------------------------------
// 中斷模式初始化
//void INT_INIT (void)
//-----------------------------------------------------------------------------------------------
void INT_INIT (void)
{
EXTMODE =0X0f; //設置外部中斷0,1,2,3 為邊沿激活方式
EXTPOLAR=0X00; //設置外部中斷0,1,2,3 為低激活方式
T1CCR =(1<<7)|(1<<8); //設置CAP1.2 下降沿產生中斷
T1TC=0;
T1TCR =0X01; //啟動定時器1
}
//---------------------------------------------------------------------------------------------------
//系統初始化
//void Beep_OFF (void)
//-----------------------------------------------------------------------------------------------------
void TargetResetInit(void)
{
/* 設置系統各部分時鐘 */
PLLCON = 1;
#if (Fpclk / (Fcclk / 4)) == 1
VPBDIV = 0;
#endif
#if (Fpclk / (Fcclk / 4)) == 2
VPBDIV = 2;
#endif
#if (Fpclk / (Fcclk / 4)) == 4
VPBDIV = 1;
#endif
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
PLLFEED = 0xaa;
PLLFEED = 0x55;
while((PLLSTAT & (1 << 10)) == 0);
PLLCON = 3;
PLLFEED = 0xaa;
PLLFEED = 0x55;
/* 設置存儲器加速模塊 */
/* Set memory accelerater module*/
MAMCR = 0;
#if Fcclk < 20000000
MAMTIM = 1;
#else
#if Fcclk < 40000000
MAMTIM = 2;
#else
MAMTIM = 3;
#endif
#endif
MAMCR = 2;
/* 初始化VIC */
/* initialize VIC*/
VICIntEnClr = 0xffffffff; //清除中斷標志位
VICVectAddr = 0x00000000; //向量中斷地址寄存器清0
VICIntSelect= 0x00000000; //所有中斷為IRQ中斷
VICVectCntl0 = 0x0000002e;
VICVectAddr0 = (unsigned int)IRQ_Eint0; // 0
VICVectCntl1 = 0x0000002f;
VICVectAddr1 = (unsigned int)IRQ_Eint1; // 1
VICVectCntl2 = 0x00000030;
VICVectAddr2 = (unsigned int)IRQ_Eint2; // 2
VICVectCntl3 = 0x00000031;
VICVectAddr3 = (unsigned int)IRQ_Eint3; // 3
VICVectCntl4 = 0x00000025;
VICVectAddr4 = (unsigned int)IRQ_TIME1; // 4
VICVectCntl5 = 0x00000027 ;
VICVectAddr5 = (unsigned int)IRQ_UART1; // 5
INT_INIT (); //中斷初始化
//EN_UART1_INT(); //開串行中斷1
//EN_W_INT(); //開寫卡中斷
Port_Init();
// Hd1_off();
//Hd2_off();
//Hd3_off();
CLR_HD2();
CLR_HD3();
UART1_Init (9600);
//------------------------------------------------------------------------------------------
// UART1= 0x00000027 串行中斷0中斷號
// TIME1= 0x00000025 捕獲中斷3中斷號
// Eint0= 0x0000002e 外部中斷0中斷號
// Eint1= 0x0000002f 外部中斷1中斷號
// Eint2= 0x00000030 外部中斷2中斷號
// Eint3= 0x00000031 外部中斷3中斷號
//------------------------------------------------------------------------------------------
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -