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