/*---------------------------------------------------------------------------------------------------------*/
/*  Main Function                                                                                          */
/*---------------------------------------------------------------------------------------------------------*/
int32_t main(void)
{
    uint16_t cnt = 0;
    uint8_t STA = 0;
    /* Unlock protected registers */
    SYS_UnlockReg();
    /* Init System, peripheral clock and multi-function I/O */
    SYS_Init();
    /* Lock protected registers */
    SYS_LockReg();
    /* Init UART0 for printf */
    UART0_Init();
    while(1) {
        STA <<= 1;
        STA += PH0;
		printf("%d \n", PH0);
		TIMER_Delay(TIMER0, 1000000);
        STA &= 3;
        if(STA == 2) {
            cnt++;
            //printf("%d ", cnt);
        }
        //TIMER_Delay(TIMER0, 1000000);
    }
}
STA 原始值 00000000(0)
           二進制 (十進制)
STA :
| 第一圈 | 
 | 
結果 | 
| 00000000 | 
左移一次 | 
00000000 | 
| 00000000+ PH0(1) | 
[沒有按] | 
00000001 | 
| 00000001 & 00000011(3) | 
 | 
00000001(1) | 
| STA == 2  false | 
 | 
 | 
| 第二圈 | 
 | 
結果 | 
| 00000001 | 
左移一次 | 
00000010 | 
| 00000010 + PH0(1) | 
[沒有按] | 
00000011 | 
| 00000011 & 00000011(3) | 
 | 
00000011(3) | 
| STA == 2  false | 
 | 
 | 
| 第三圈 | 
 | 
結果 | 
| 00000011 | 
左移一次 | 
00000110 | 
| 00000110 + PH0(1) | 
[沒有按] | 
00000111 | 
| 00000111 & 00000011(3) | 
 | 
00000011(3) | 
| STA == 2  false | 
 | 
 | 
| 第四圈 | 
 | 
結果 | 
| 00000011 | 
左移一次 | 
00000110 | 
| 00000110 + PH0(1) | 
[沒有按] | 
00000111 | 
| 00000111 & 00000011(3) | 
 | 
00000011(3) | 
| STA == 2  false | 
 | 
 | 
| 第五圈 | 
 | 
結果 | 
| 00000011 | 
左移一次 | 
00000110 | 
| 00000110 + PH0(0) | 
[按下去] | 
00000110 | 
| 00000110 & 00000011(3) | 
 | 
00000010(2) | 
| STA == 2  true | 
 | 
印數字 | 
(CPU執行很快,可能不小心print到數個數字)
| 第六圈 | 
 | 
結果 | 
| 00000010 | 
左移一次 | 
00000100 | 
| 00000100 + PH0(0) | 
[還按著] | 
00000100 | 
| 00000100 & 00000011(3) | 
 | 
00000000(0) | 
| STA == 2  false | 
 | 
 | 
| 第七圈 | 
 | 
結果 | 
| 00000000 | 
左移一次 | 
00000000 | 
| 00000000 + PH0(0) | 
[還按著] | 
00000000 | 
| 00000000 & 00000011(3) | 
 | 
00000000(0) | 
| STA == 2  false | 
 | 
 | 
| 第八圈 (等於第一圈) | 
 | 
結果 | 
| 00000000 | 
左移一次 | 
00000000 | 
| 00000000 + PH0(1) | 
[沒有按] | 
00000001 | 
| 00000001 & 00000011(3) | 
 | 
00000001(1) | 
| STA == 2  false | 
 | 
 |