最近また 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) |