80c51单片机用外部中断1(按下按钮)实现分数的加功能,用外部中断0(按下按钮)实现分数的减功能。
给你讲思路吧,先设置外部中段,打开中断开关。主程序可以利用一个for循环,每有一次中断就操作一次数组(数组元素加一或减一(其中数组对应的是数码管1~9的显示))
80C51单片机的外部中断1的中断请求标志是(D.IE1)。
为什么?
Intel 公司,就是这样设计的。
#include<reg51.h>
#define uchar unsigned char
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //0到9
uchar num,cnt;
unsigned int disn;
uchar led[]={0,0,0,0};
void dealdat(uchar a)
{
led[0]=disn/1000;
led[1]=(disn%1000)/100;
led[2]=(disn%100)/10;
led[3]=disn%10;
}
void ext0() interrupt 0
{
disn++;
disn%=10000;
}
void ext1() interrupt 2
{
if(disn>0)disn--;
}
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
switch(num)
{
case 0:P2=0x01;break;
case 1:P2=0x02;break;
case 2:P2=0x04;break;
case 3:P2=0x08;break;
default:break;
}
P0=~tab[led[num]];
num++;
num&=0x03;
}
main()
{
TMOD=0x11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
EA=1;
while(1)
{
if(key==0)
{
while(key==0);
disn=0;
}
}
}
C51单片机程序。利用外部中断INT0,INT1,当INT0产生中断时,使LED8亮8...
LED8=0;Delay(500);LED7=0;LED8=0;} } 备注:1、led对应引脚可以修改,程序中默认单片机引脚低电平点亮led,如果是高电平点亮 led,反过来设置引脚电平就可以了;2、延时时间可以按自己需要修改;3、#include<reg52.h>这一句中的52根据实际需要修改,是51系列则改为51,52则改为 52,一定不能错...
...编写C51语言程序 利用单片机的外部中断0(P3.2)功能实现当按下_百...
while(!key);flag=0;P1=distab[0];} }
如何用C51单片机外部中断测量电机转速?
使用计时器,在产生一个中断的时候读取计时器的数值,在下次中断的时候再次读取计时器数值,这两个时间的差就是转一圈的时间,从而计算出速度。也可以多转几圈计算其平均值。
外部中断0在C51的中断号是什么?拜托各位了 3Q
中断号 就是0啊。。 追问: 为什么会是0呢?这样的话,外部中断1的中断号就是1了?还有,INT0非、IT0和0有什么关系呢? 回答: 参考8051 系列 MCU 的基本结构。 C51单片机的中断号 外部中断0 0 定时器T0 1 外部中断1 2 定时器T1 3 串口中断 4 ...
单片机ram是什么?
0C51是一种经典的8位单片机,其RAM主要分为三个部分:内部RAM、扩展RAM和SFR(特殊功能寄存器)。内部RAM80C51单片机内部集成了128字节的RAM,可以用于程序存储、数据存储和堆栈存储等。内部RAM的特点是速度快、可读可写,但容量有限。扩展RAM80C51单片机可以通过外接存储器芯片来扩展RAM的容量,扩展RAM的...
C51单片机 写出片外RAM2000H单元到2020H单元的数据的高四位和低四位互 ...
Mov dptr,#2000h Movx a,@dptr Mov 20h,a 供参考。
c51单片机接收不到外置模块输入的信号有什么解决的办法吗?
首先得知道遥控器的协议,例如1和0用什么表示,电平之间延时多少时间,开始信号是什么 停止信号是什么,然后把中间信号利用协议解出,存在数组里,通过数组和有效信号的比对,可只是否是有效信号
mcs-51单片机有几个中断源
mcs-51单片机有5个中断源,分别为:1、外部中断0(INT0):默认中断级别最高,中断入口地址0003H;2、定时\/计数器0(T1):默认中断级别第2,中断入口地址000BH;3、外部中断1(INT1):默认中断级别第3,中断入口地址0013H;4、串行口中断(TX\/RX):默认中断级别第4,中断入口地址0023H;5、...
C51单片机如何接收外置模块输入的信号
首先得知道遥控器的协议,例如1和0用什么表示,电平之间延时多少时间,开始信号是什么 停止信号是什么,然后把中间信号利用协议解出,存在数组里,通过数组和有效信号的比对,可只是否是有效信号,
c51单片机中断程序中的interrupt1,2,3是由什么决定的?
interrupt X是指用的第几个中断。。1~2~3是由中断向量表决定的。也就是由单片机的中断入口地址的顺序决定的。这个是硬件决定的软件不能改变。例如外部中断0就是interrupt 0 定时器0 是interrupt 1 外部中断1是interrupt 2 定时器2是interrupt 3 串口是interrupt 4 ...
前连醋氨:[答案] 既可用外部中断方式来实现; 也可以用查询方式读键处理. 灯的亮灭,就是对P1口的赋值操作, 每次多一盏,可以让初值为0xff.此后,每次左移或右移实现. 每次少一盏,可以与前面相反,右移或左移,并在移入位补1. 注意去抖动处理,好好写吧,...
赤坎区18199753663: 求C51单片机用C程序,通过外部中断1实现按键按下(低电平),7个LED灯单独1盏亮且循环右移. - ?
前连醋氨: #include<reg51.h> #define uchar unsigned char uchar led[7]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf}; uchar num=0; void ext1() interrupt 2 { P0=led[num]; num++; num%=7; while(INT1==0); } main() { EX1=1; IT1=0; EA=1; P0=0xff; while(1); }
赤坎区18199753663: 80C51单片机有哪些中断源?对应的中断入口地址分别是什么? - ?
前连醋氨: [中断入口说明]interrupt 0 外部中断0(ROM入口地址:0x03)interrupt 1 定时/计数器中断0(ROM入口地址:0x0B)interrupt 2 外部中断1(ROM入口地址:0x13)interrupt 3 定时/计数器中断1(ROM入口地址:0x1B)interrupt 4 UART串口中断(ROM入口地址:0x23)(更多的中断依单片机型号而定,ROM中断入口均相差8个字节)using 0 使用寄存器组0using 1 使用寄存器组1using 2 使用寄存器组2using 3 使用寄存器组3
赤坎区18199753663: 80c51外部中断有哪两种触发方式??
前连醋氨: 有两种方式:下降沿触发方式和低电平触发方式 一般单片机能识别的低电平是0.8V,只要低于这个电压就能触发中断
赤坎区18199753663: 51单片机有哪些中断级,如何对各中断请求进行控制 - ?
前连醋氨: (1)80C51有以下中断源:① 外部中断0(/INT0 )请求,低电平有效. ② 外部中断1(/INT1)请求,低电平有效.③ T0:定时器/计数器0溢出中断请求. ④ T1:定时器/计数器1溢出中断请求.⑤ TI/RI:串行接口中断请求. (2)通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实现对各种中断的控制功能.
赤坎区18199753663: c51单片机如何使用中断 - ?
前连醋氨: 将按键接到P3.2(INT0)或P3.3(INT1) main(){EA=1; //EA总中断控制,EA=0关,EA=1开EX0=1;//INT0中断控制.0关1开,按键接P3.2用这个EX1=1;//INT1中断控制.0关1开,按键接P3.3用这个//默认情况下,直接使EX0=1或EX1=1来打开中...
赤坎区18199753663: 51单片机中断程序怎么写 - ?
前连醋氨: 主函数: EX0=1; //外部中断0 IT0=1; // 1:下降沿触发、0:低电平触发 EA=1; //开启总中断 中断子程序: void inter0() interrupt 0 {} 外部中断1将0换成1.
赤坎区18199753663: 51单片机外部中断的触发方式 - ?
前连醋氨: 51单片机的外部中断有两种触发方式可选:电平触发和边沿触发.选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断.选择边沿触发方式时,单片机在上一个机器周期检测到中断...