查詢銀行數位帳戶免費優惠剩餘次數
2 個月前
下面這支程式的 baudrate 是 38400 使用 40MHz 的震盪器。主要功能就是你輸入什麼,就顯示什麼。依此下列程式再加上 SDCC 裏的 printf 就可以用來做 debug 輸出功能了,短小精幹好用。
PS: 由於沒有使用到 ES 中斷,所以可以很放心的在中斷函數中使用 printf 來輸出訊息。
PS: 因為我不會用 8051 的模擬器,所以都用 printf 在做 debug,有人說這樣不方便,其實用久習慣就好了。不管黑貓白貓,可以抓到老鼠就是好貓。
| type | SDCC | instruction | size | addressing |
| (A) program | __code | MOVC | 64K | index direct |
| (B) external | __xdata | MOVX | 64K | indirect |
| (C) internal(80~FF) | __idata | MOV | 128 | indirect |
| (C) SFR(80~FF) | __sfr | MOV | 128 | direct |
| (C) internal(0~7F) | __data | MOV | 128 | direct/indirect |
| type | read | write | register |
| direct | MOV Rn,direct MOV direct,direct | MOV direct,Rn MOV direct,@DPTR MOV direct,#data | R0~R7,A |
| indirect | MOV direct,@Ri MOVX A,@DPTR | MOV @Ri,direct MOVX @DPTR,A MOV @Ri,#data | R0,R1,DPTR,A |
| index direct | MOV A,#30h MOV DPTR,#300H MOVC A,@A+DPTR | X | A,DPTR |
| RCLK/TCLK | CP/RL2 | TR2 | mode |
| 0 | 0 | 1 | 1. 16 位元自動載入 |
| 0 | 1 | 1 | 2. 16 位元補捉 |
| 1 | x | 1 | 3. 鮑率產生 |
| x | x | 0 | 停止動作 |
| 圖一 | 16-Bit Auto-reload Mode 16 位元自動載入模式 |
| CP/RL2=0 and RCLK=0 and TCLK=0 |
| 圖二 | 16-Bit Capture Mode 16 位元補捉模式 |
| CP/RL2=1 and RCLK=0 and TCLK=0 |
| 圖三 | Baudrate Generator Mode 鮑率產生模式 |
| RCLK=1 or TCLK=1 |