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
关键字:松翰单片机 外部中断
引用地址:
松翰单片机外部中断
推荐阅读最新更新时间:2024-03-16 14:24
外部中断实验
一。外部中断的概述 1. 对于51系列单片机只有2个外部中断输入引脚,外部中断0和外部中断1 而STM32的每一个IO口都可以作为外部中断输入。 2. STM32F103系列单片机中断控制器支持19个外部中断请求。 线0-15对应外部IO口的输入中断。 线 16:连接到 PVD 输出。 线 17:连接到 RTC 闹钟事件。 线 18:连接到 USB 唤醒事件。 3. 对于每一个中断线都可以独立的配置触发方式:上升沿,下降沿或双边沿触发。 二。 GPIO与中断线的映射 GPIO与中断线的映射关系图 GPIOx.0映射到外部中断线EXTI0 GPIOx.1映射到外部中断线EXTI1 ...... GPIOx.15映射
[单片机]
51单片机实验——按键外部中断实现四进制计数器
1.实验题目: 设计一个通过触发外部中断INT1实现的在0-3之间计数(四进制)的计数器,并通过P1.6和P1.7端口上的LED,显示计数的值。 2.KEIL代码 #include reg51.h sbit P16=P1^6; sbit P17=P1^7; void INT1_Init();//声明中断初始化函数 void main() { INT1_Init();//调用中断初始化函数 while(1); } void INT1_Init() //编写中断初始化函数 { EA=1;//开启中断总开关 EX1=1;//开启外部中断1 IT1=1;//设定为下降沿触发 IE1=0;//清
[单片机]
STM32学习之路-外部中断(2)
继续上篇的内容. 配置好外部中断源以后, 就得使能外部中断线了. 为了方便看再借下这个图: 对外部中断的使能其实就是配置上面这些寄存器.即使能哪EXIT线,选择上面模式,是中断还是事件,选择下降沿还是上升沿. 具体怎么写寄存器这就不研究了, = = 太麻烦了.. 直接用STM32的库就行了,来看看它的代码吧 这是EXTI结构体的初始化函数, void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct) { EXTI_InitStruct- EXTI_Line = EXTI_LINENONE; EXTI_InitStruct- EXTI_Mode = EXTI
[单片机]
AVR使用范例--AVR外部中断范例
系统在正常运行主程序时,如果突然有一个重要的任务要马上处理,那么系统就要保存现在的工作,然后再去处理这个任务,执行这个重要任务完毕以后再返回原来的主程序继续运行,这就是中断。 主程序一旦进入中断服务程序,那么AVR芯片将自动的关闭全局中断,在这个期间不再执行其它的中断请求,直到中断程序结束以后芯片才自动的重新开放全局中断。(注意,在这个期间某些中断请求可能会被丢弃,某些请求会留下中断请求标致,一旦当前的中断执行完毕,这个有中断标致的请求就有可能马上得到响应,如INT0的下降沿触发就会留下中断请求标致,而低电平触发就不会流下中断请求标致)。如果你想在执行中断服务程序时响应另外一个更重要的中断,那么就要在中断服务程序中加入一条打开全局中
[单片机]
STM32_外部中断线/事件线理解
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径。 首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。 接下来是编号3的或门,这个或门的另一个输入是软件中断/事件寄存器
[单片机]
C51/C52的中断(EXTI)
一、数码管显示原理: 数码管其实就是有8个LED构成,分为a、b、c、d、e、f、g、dp,而数码管又分为共阴极(左边,高电平点亮)和共阳极(右边,低电平点亮),点亮对应的LED即可显示对应的数字,共阴极编码表如下: 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d 、0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c,0x39 , 0x5e , 0x79 , 0x71 , 0x00 分别对应0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,而0x00则不显示。 注意:比如显示0,则要abcdef都为1,即是0011 1111,转为16进制就是
[单片机]
单片机小白学习之路(十三)---外部中断0实现led闪烁
目标:外部中断0实现led闪烁 #include reg52.h typedef unsigned int u16; typedef unsigned char u8; sbit k3 = P3^2; //独立按键,连接外部中断0 sbit led = P2^0; void delay(u16 i) { while(i--); } void Int0_init() //提前把外部中断0的参数准备好 { EA = 1; IT0 = 1; EX0 = 1; } void main() { Int0_init(); while(1); } void INT0() interrupt
[单片机]
ARM7与FPGA相结合的应用
ARM7与FPGA相结合在工业控制和故障检测中的应用 工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。 各部分功能简介 图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;FPGA与目标设备通过命令控
[应用]