今さらですが、8051のPSWのBit0がParityFlagであることに気付きました。 符号付演算のチェックをしていて、OV(OverflowFlag)の振る舞いを確認するため、データーシートを見て気付きました。 お恥ずかしい。 いままで、ParityFlagを使ったことがなかったので全く忘れてました。
それで、この前実験したソフトウェアTXが普通にシンプルになるはずです。 タイマー割り込みルーチンが短くなるはずです。 今度、使用前、使用後でタイマー割り込みルーチンの時間を計って見ましょう。
ちなみに今はこんな無駄なことをしています。
;================================================================ ; Timer0 割込み Software UART用 ;================================================================ ;**** SOFTWAER UART *********************************************
INT_TM0: SETB TEST_P ;TEST時間測定用
PUSH PSW PUSH ACC CLR TF0 ;****
ST00: ;***STX0******** JNB STX0_F, ST0R INC STXBCNT0 MOV A, STXBCNT0 CJNE A, #1, ST01 CLR STX0_P ;START BIT = 0 MOV STXPCNT0, #0 ;PARTY CNT =0 JMP ST0R
ST01: CJNE A, #10, ST02 MOV A, STXPCNT0 RRC A MOV STX0_P, C ;DATA8BITの1の数が偶数で0 JMP ST0R ST02: CJNE A, #11, ST03 SETB STX0_P ;STOP BIT = 1 CLR STX0_F MOV STXBCNT0, #0 JMP ST0R ST03: MOV A, STXBUF0X RRC A MOV STX0_P, C ;STX PORT MOV STXBUF0X, A
CLR A ADDC A, STXPCNT0 ;PARTY BIT CNT MOV STXPCNT0, A ST0R:
ST_RT:
POP ACC POP PSW
CLR TEST_P ;TEST*****
RETI
|
|
|