微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 松翰单片机外部中断程序

松翰单片机外部中断程序

时间:04-03 来源:互联网 点击:
chip sn8f27e65
//{{SONIX_CODE_OPTION
//完整源码下载: http://www.51hei.com/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 0
TEMP DS 1
ACCBUF DS 1
PflagBUF DS 1
K DS 1
.CONST
K1 EQU K.0;标志位
.CODE;程序代码

ORG 0000H
JMP A1
ORG 09H;外部中断入口
JMP INT00
A1: MOV A,#02H;设置中断触发方式为低电平触发
B0MOV PEDGE,A
B0BCLR FP00IRQ;清中断标志
B0BSET FP00IEN;开中断
B0BSET FGIE;开总中断
B0BSET K1 ;设置标志
JMP $
;*************************************************
;中断服务程序
;*************************************************
INT00:
B0BCLR FP00IEN;关中断
B0BCLR FGIE;禁止中断
B0XCH A,ACCBUF;压栈
B0MOV A,PFLAG;
B0MOV PFLAGBUF,A;
B0BTS1 FP00IRQ;判断是否真的发生中断
JMP INT01

B0BTS1 K1;判断标志来控制LED状态标志为1LED亮
JMP K01
B0BCLR K1;标志清0
B0BSET 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 K00

CALL M001
B0BCLR P0M.0
B0BSET P0UR.0
B0BTS1 P0.0;判断P0.0是否为0是继续否跳过下一条指令
JMP K00
JMP INT01
K01:
B0BTS0 K1
JMP INT01
B0BSET K1
B0BSET P0M.3
B0BSET P0.3
K02:
CALL M001
B0BCLR P0M.0
B0BSET P0UR.0
B0BTS1 P0.0;判断P4.0是否为1是继续否跳过下一条指令
JMP K02
CALL M001
B0BCLR P0M.0
B0BSET P0UR.0
B0BTS1 P0.0;判断P4.0是否为1是继续否跳过下一条指令
JMP K02
INT01:
B0MOV A,PFLAGBUF;弹栈
B0MOV PFLAG,A
B0XCH A,ACCBUF
B0BCLR FP00IRQ
B0BSET FP00IEN
B0BSET FGIE
RETI
;*********************************************
;延时子程序
;*********************************************
M001: MOV A,#200
MOV 50H,A
M002: MOV A,#250
MOV 51H,A
M003: DECMS 51H
JMP M003
DECMS 50H
JMP M002
RET
ENDP

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top