以下是程序
#include mc30p6060.inccblock 0x10FLAG_00R_TIME_COUNTR_MODER_TIME_KEY_LR_TIME_KEY_HACCBUFSTABUFendc ;================================================#DEFINE FLG_4MS FLAG_00,0#DEFINE FLG_KEY_LOCK FLAG_00,1#DEFINE PIN_LED P1,0#DEFINE PIN_MOTOR P1,1#DEFINE PIN_KEY P1,2;================================================ org 03FFH goto START org 0000H goto START org 0008H goto INTER org 0010H;================================================MLOOP: CLRWDT JBSET FLG_4MS GOTO MLOOP BCLR FLG_4MS CALL SCAN_KEY CALL CHECKTEMP GOTO MLOOP;================================================CHECKTEMP: MOVAR R_MODE ADDRA PCL GOTO CHECKTEMP1 GOTO CHECKTEMP2 GOTO CHECKTEMP3CHECKTEMP1: BCLR PIN_LED BCLR PIN_MOTOR RETURNCHECKTEMP2: BSET PIN_LED BCLR PIN_MOTOR RETURNCHECKTEMP3: BSET PIN_LED BSET PIN_MOTOR RETURN ;================================================SCAN_KEY: JBCLR PIN_KEY GOTO SCAN_KEY_UP INCR R_TIME_KEY_L MOVAI 20 RSUBAR R_TIME_KEY_L JBSET C GOTO SCAN_KEY_EXIT CLRR R_TIME_KEY_L INCR R_TIME_KEY_H MOVAI 37 RSUBAR R_TIME_KEY_H JBSET C GOTO SCAN_KEY_EXIT CLRR R_TIME_KEY_H JBCLR FLG_KEY_LOCK GOTO SCAN_KEY_EXIT BSET FLG_KEY_LOCK CLRR R_MODE GOTO SCAN_KEY_EXITSCAN_KEY_UP: JBCLR FLG_KEY_LOCK GOTO SCAN_KEY_CLR MOVAR R_TIME_KEY_H JBCLR Z GOTO SCAN_KEY_CLR INCR R_MODE MOVAI 3 RSUBAR R_MODE JBCLR C CLRR R_MODESCAN_KEY_CLR: BCLR FLG_KEY_LOCK CLRR R_TIME_KEY_L CLRR R_TIME_KEY_HSCAN_KEY_EXIT: RETURN;================================================INTER: MOVRA ACCBUF SWAPAR STATUS MOVRA STABUF;----------------------------------------------------------- JBSET T0IF GOTO INT_OUT;-----------------------------------------------------------TIM0_IN: NOP NOP NOP MOVAI 156 MOVRA T0CNT INCR R_TIME_COUNT MOVAI 40 RSUBAR R_TIME_COUNT JBSET C GOTO INT_OUT CLRR R_TIME_COUNT BSET FLG_4MS;-----------------------------------------------------------INT_OUT: CLRR INTFLAG SWAPAR STABUF MOVRA STATUS SWAPR ACCBUF SWAPAR ACCBUF RETIE;===========================================================START: MOVAI 00000000B ;MCU8,MCU10 MOVRA P1 MOVAI 00000100B MOVRA DDR1 MOVAI 11111011B MOVRA PUCON MOVAI 00000000B ;MCU13,MCU12 MOVRA DDR0 MOVAI 11111111B MOVRA P0 MOVAI 10H MOVRA FSRINITALRAM: CLRR INDF INCR FSR MOVAI 0xFF RSUBAR FSR JBSET Z GOTO INITALRAM MOVAI 00000001b;//4分頻 1M=1us MOVRA T0CR MOVAI 156 ;0.1ms MOVRA T0CNT BSET GIE BSET T0IE;----------------------------------------------------------- GOTO MLOOP;=========================================================== END
|