‘壹’ 很简单的51单片机程序,在线等!!
你现在的程序 INT0是1的话 while(!INT0);是不执行的所以直接执行了下边的程序 所以那三个灯亮了
‘贰’ stc15f2k60s2单片机的外部中断怎么使用
STC单片机官方提供的工具软件里面有例程可以查看。
打开软件后,右边栏有“范例程序”选项,点击后打开窗口,在“单片机系列”选项里选择系列,然后选择需要的范例。
如果需要更详细的内容,可以下载官方的器件手册。
‘叁’ 单片机中断打开后,直接进入中断
在EX0置1前在外部的P3^2口有脉冲,
那么在EX0置1后,打开EA,会直接进入中断程序,
这是为什么呢,
----
这是正常现象。
楼主认为,应该在什么时候进入中断?
在打开EA的前一条指令,应该是:
IE0 = 0; //消除以前的中断申请
‘肆’ 单片机中 INT0,EX0,ET0,IE0.分别表示什么意思
这个事51系列单片机的一系列中断控制系统的寄存器位IT0:外部中断0触发方式控制位,1表示边沿触发,0表示电平触发
EX0:外部中断0允许位,1表示允许外部中断0的中断申请
ET0:定时/计数器0中断允许位,1表示允许定时/计数器0的溢出中断
IE0:外部中断0中断申请标志位,1表示有中断申请
‘伍’ 单片机缩写的英文全称及中文名称
单片机缩写的英文全称是Microcontrollers,中文名称就是单片机。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
(5)单片机exint0扩展阅读:
单片机的单机应用的范围:
1、测控系统。 用单片机可以构成各种不太复杂的工业控制系统、自适应控制系统、数据采集系统等, 达到测量与控制的目的。
2、智能仪表。 用单片机改造原有的测量、控制仪表, 促进仪表向数字化、智能化、多功能化、综合化、柔性化方向发展。
3、机电一体化产品。单片机与传统的机械产品相结合, 使传统机械产品结构简化, 控制智能化。
4、智能接口。 在计算机控制系统, 特别是在较大型的工业测、控系统中, 用单片机进行接口的控制与管理, 加之单片机与主机的并行工作, 大大提高了系统的运行速度。
5、智能民用产品。 如在家用电器、玩具、游戏机、声像设备、电子秤、收银机、办公设备、厨房设备等许多产品中, 单片机控制器的引入, 不仅使产品的功能大大增强, 性能得到提高, 而且获得了良好的使用效果。
‘陆’ 让串口,和按键,同时控制单片机一个io口输出高电平戓低电平,
#include "reg52.h"
sbit key1 = P3^2;
sbit key2 = P3^3;
sbit out = P0^0;
void UartInit(void) //[email protected]
{
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE8; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
void main(void)
{
UartInit();
IT0 = 1; //set INT0 int type (1:Falling 0:Low level)
EX0 = 1; //enable INT0 interrupt
IT1 = 1; //set INT0 int type (1:Falling 0:Low level)
EX1 = 1; //enable INT0 interrupt
ES = 1;
EA = 1; //open global interrupt switch
while(1);
}
//External interrupt0 service routine
void exint0() interrupt 0 //(location at 0003H)
{
out = 1;
}
//External interrupt1 service routine
void exint1() interrupt 2 //(location at 0013H)
{
out = 0;
}
/*----------------------------
UART interrupt service routine
----------------------------*/
void Uart_Isr() interrupt 4 using 1
{
unsigned char temp;
if (RI)
{
RI = 0; //Clear receive interrupt flag
temp = SBUF;
if(temp == 0xaa)out = 1;
if(temp == 0x55)out = 0;
}
if (TI)
{
TI = 0; //Clear transmit interrupt flag
}
}
‘柒’ 单片机 程序中的 EA EX ET TR TH TL什么意思
EA是总中断允许位,EX是外部中断允许位(EX0,EX1分别指外部中断INT0,INT1),ET是内部定时器/计数器中断允许位,TR定时器/计数器启动位,它们都是高电平1有效。TH、TL分别指定时器/计数器的高8位和低8位(后面加0/1表示定时器/计数器0/1,如TH0=255表示给定时器0的高八位赋初值255)。
‘捌’ 单片机setb ex0是什么意思
SETB bit;置位某位 就是把1→bit。应该是EX0吧。EX0(IE.0):外部中断INT0的中断允许 EX0=1打开外部中断
‘玖’ 求单片机大神解释这些语句是啥意思,并且最终实现了什么功能,谢谢各位
#include "reg51.h"
#include "intrins.h"
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;
上面这些是 寄存器声明,其实头文件里面也就是传统51的寄存器声明 了, 这个程序使用的增强型的51内核单片机,有P0——P7 8个IO口, 所以需要重新声明下reg51里面没有声明的部分。
void exint0() interrupt 0//INT0中断入口
{
P10 = !P10; //将测试口取反
FLAG = INT0;//保存INT0口的状态, INT0=0(下降沿); INT0=1(上升沿)
}
这部分是中断服务函数,外部中断0 进入终端 P1^0取反一次,同时把外部中断0的电平付给FLAG
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P6M0 = 0x00;
P6M1 = 0x00;
P7M0 = 0x00;
P7M1 = 0x00;
这里是 给单片机的IO口 选择工作方式,一般有高阻输入,准双向IO口,开漏,推挽输出,这几种,增强型的可以给寄存器赋值来 设置工作模式的。 0x00的话一般是 准双向IO口使用的
INT0 = 1; //外部中断0 口 电平拉高,。
IT0 = 0;//设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
EX0 = 1; //使能INT0中断
EA = 1;
while (1);
}
这个程序就是外部中断0 只要发生电平变化,就会进入中断,
‘拾’ 51单片机串口通信时, 外部中断无法执行
串口通信是不是也是采用中断方式?如果与外部中断为同一优先经中断的话,则当51单片机串口通信时(串口中断时),外部中断是无法执行的。
如果想实现外部中断优先,需要改变它们的优先级别,串口低优先级PS=0,外部中断高优先级PX0=1,PX1=1