暫停單燈左移 2
//查表法可暫停單燈左移, project name : ch03/b_left_stop3 //
#include "SPCE061A.H"
#define ON 0xffff
unsigned int KeyScan(void);
void Key_Delay(void);
void delay();
void Init_B_Port();
void Init_A_Port();
int state=1;
char
table[8]={0xFFFE,0xFFFD,0xFFFB,0xFFF7,0xFFEF,0xFFDF,0xFFBF,0xFF7F};
int main() {
unsigned int a,key,i=0;
Init_A_Port(); //規劃 A Port 為帶下拉電阻輸入 Init_B_Port(); //規劃 B Port 為同相低電位輸出 while (1)
{
key = KeyScan();
if (key != 0)
if (state == 1) state = 0; else state = 1;
if (state == 1) {
*P_IOB_Data = table[i++];
if ( i == 8 ) i=0;
delay(20000);
}
} }
//========================================================
unsigned int KeyScan(void) {
unsigned int Data;
unsigned int Temp;
Data = *P_IOA_Data; //讀取 IOA 埠輸入 Data = Data & 0x000f; //僅取低 4 位有效值
delay(10000); //延時消抖
*P_Watchdog_Clear = 0x0001; //清看門狗 return Data; //返回鍵值 }
//========================================================
void delay(int n) {
int i,key;
for (i=0; i< n; i++) ;
*P_Watchdog_Clear = 0x0001;
}
//======================================================
void Init_A_Port() {
*P_IOA_Dir = 0x0000; //規劃 A Port 為帶下拉電阻輸入 *P_IOA_Attrib = 0x0000;
*P_IOA_Data = 0x0000;
}
//======================================================
void Init_B_Port() {
*P_IOB_Dir = 0xffff; //規劃 B Port 為同相的低電位輸出 *P_IOB_Attrib = 0xffff;
*P_IOB_Data = 0;
}