最近また PIC をいじる機会がでてきました. 昔 16C84 から始まって 16F648 や 16F88 を愛用していました. せっかくの機会なので最新の 16F1827 を使うことにしてみたところ 新たな Tips が出てきたので忘れないよう書いておきます.
__CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF __CONFIG _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_HI & _LVP_OFF |
movlb 1
movlw 0xXX movwf OSCCON movlb 3 clrw movwf ANSELA movwf ANSELB movlb 1 movlw 0xXX movwf TRISA movlw 0xXX movwf TRISB |
設定値 | 動作周波数 |
0x68 | 4MHz |
0x70 | 8MHz |
0x78 | 16MHz |
0xf0 | 32MHz |
movlb 2 clrw movwf APFCON0 movwf APFCON1 movlb 3 movlw 0x08 movwf BAUDCON clrw movwf SPBRGH movlw 0xXX movwf SPBRGL movlw 0x24 movwf TXSTA movlw 0x90 movwf RCSTA |
movlb 2 movlw 0x83 movwf FVRCON movlb 1 movlw 0xd3 movwf ADCON1 |
movlb | バンク切り替え |
lsrf | 7bit目には0が入る右シフト |
lslf | 0bit目には0が入る左シフト |
asrf | 7bit目は変化しない右シフト |
addwfc | (W)+(f)+(C)→dest |
subwfb | (f)-(W)-( B )→dest |
reset | ハードウェアリセットと同等 |
bra | 定数による相対ジャンプ (-256 前 ∼ 255 先) |
brw | W による相対ジャンプ ((1 ∼ 256 先) |
callw | 下位1byte が W のアドレスへコール 上位は現状維持 |
moviw | INDFn → W, FSR 変化 (書き方いろいろ) |
movwi | W → INDFn, FSR 変化 (書き方いろいろ) |
addfsr | FSR(n) += k |
movlp | ページ切り替え |
tris | (W)→ TRISX (f=5 なら A, 6 ならB) |