松翰单片机外部中断程序

松翰单片机外部中断程序

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:感谢大家的阅读,本文由我司收集整编。仅供参 阅!

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4