松翰单片机外部中断程序
chip
sn8f27e65//{{SONIX_CODE_OPTION//完整源码下载:
51hei/f/shwbzd.rar .Code_Option WDT_CLK Flosc/4.Code_Option Reset_Pin P04.Code_Option LVD LVD_Max ; 3.3V Reset.Code_Option Watch_Dog Disable ; 关闭看门狗.Code_Option Low_Fcpu Flosc/1.Code_Option High_Clk IHRC_16M ; Internal 16M RC Oscillator.Code_Option High_Fcpu Fhosc/1.Code_Option Security Enable.Code_Option Noise_Filter Enable//}}SONIX_CODE_OPTION.DATA;数据 ORG 0TEMP DS 1ACCBUF DS 1PflagBUF DS 1K DS 1.CONST K1 EQU K.0;标 志位.CODE;程序代码 ORG INT00A1:
MOV
0000HJMP
A1ORG
09H;外部中断入口 JMP
A,#02H;设置中断触发方式为低电平触发 B0MOV
FP00IEN;开中断 B0BSET
;设置标志 JMP
PEDGE,AB0BCLR FP00IRQ;清中断标志 B0BSET
K1
FGIE;开总中断 B0BSET
$;*************************************************;中断服务程序; *************************************************INT00:
B0BCLR
FP00IEN;关中断 B0BCLR FGIE;禁止中断 B0XCH A,ACCBUF;压栈 B0MOV A,PFLAG;B0MOV PFLAGBUF,A;B0BTS1 FP00IRQ;判断是否真的发生中断 JMP
INT01B0BTS1
K1;判断标志来控制 LED 状态标志为 1LED 亮 JMP
K01B0BCLR K1;标志清 0B0BSET P0M.3;设置 P0.3 为输出模式 B0BCLR P0.3; 点亮 LED;*******************************************;按键去抖; *******************************************K00:
CALL
M001;延时
B0BCLR P0M.0;设置 P0.0 为输入模式 B0BSET P0UR.0;设置 P0.0 上拉 B0BTS1 P0.0;判断 P0.0 是否为 0 是继续否跳过下一条指令
JMP
K00CALL
M001B0BCLR P0M.0B0BSET P0UR.0B0BTS1 P0.0;判断 P0.0 是否为 0 是继续否
跳过下一条指令 JMP K00JMP INT01K01:B0BTS0 K1JMP INT01 B0BSET K1B0BSET P0M.3B0BSET P0.3K02: CALL M001B0BCLR P0M.0B0BSET P0UR.0B0BTS1
P0.0;判断 P4.0 是否为 1 是继续否跳过下一条指令
JMP
K02CALL M001B0BCLR P0M.0B0BSET P0UR.0B0BTS1 P0.0;判断 P4.0 是否为 1 是继续否跳过下一条指令 B0MOV
JMP
K02INT01:B0MOV A,ACCBUFB0BCLR
A,PFLAGBUF;弹栈 FP00IRQB0BSET
PFLAG,AB0XCH
FP00IENB0BSET
FGIERETI;*********************************************;延时子程序; *********************************************M001: MOV A,#200MOV
50H,AM002: MOV A,#250MOV 51H,AM003: DECMS 51HJMP M003DECMS 50HJMP M002 RETENDPtips:感谢大家的阅读,本文由我司收集整编。仅供参 阅!