单片机c语言写两个中断,两个中断怎么写

发布网友 发布时间:2022-04-20 06:15

我来回答

2个回答

热心网友 时间:2023-07-30 15:40

//任务6 显示按键按下的次数(中断方式)
//任务6 显示按键按下的次数(中断方式)
#include <reg51.h> //1 包含特殊功能寄存器定义头文件reg51.h
#define ledport P2 //2 宏定义:ledport代表P2(发光二极管接P2口)
#define uchar unsigned char //3 宏定义:uchar代表unsigned char
#define ulong unsigned int //3 宏定义:ulong代表unsigned long
#define unsigned int j;
uchar m=0xef; //5 定义变量m:m用来保存显示控制数据,初值为0xfe
ulong i;
sfr p1=0x90;
sbit led1=P1^0; //led引脚定义
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;

void fun1_int() interrupt 0 using 1//5 定义中断服务函数:中断号为0,用第1组寄存器组
{
while(1) //while循环(永远为真,死循环)
{ //循环体开始
led1=~led1; //发光二级管的显示状态取反
led2=~led2;
led3=~led3;
led4=~led4;

for(j=0;j<12500;j++); //for循环,循环体为空,耗时 //延时500ms
}
} //循环体结束

void fun2_int() interrupt 1 using 2//5 定义中断服务函数:中断号为0,用第1组寄存器组
{

while(1) //7 while循环,条件表达式为1,永远为真,死循环
{ //8 while循环体开始
P1=m; //9 P1口输出当前显示控制数据
m=(m<<1)|(m>>7); //10 显示数据m向左循环移1位,为下次显示输出作准备
for(i=0;i<60000;i++); //11 for循环实现1s延时,循环体为空语句
} //12 while循环体结束
}

//8 中断服务函数结束
void main(void) //9 main函数
{
EA=1;
EX0=0; //12 开外部中断0
EX1=0;
IT1=1;
IT0=1; //11 设置外部中断0的触发方式:下降沿触发。见代码说明

while(1)
; //14 死循环,循环体为空语句
} //15 main函数结束
//任务1 控制1只发光二极管闪烁显示上面的注释可以省略不看,

这个需要设置不同的寄存器,注意依稀俺这里就可以了的,然后查一下数据手册。追问能不能详细点我中断才学,不太懂

热心网友 时间:2023-07-30 15:40

用S0控制小灯D0-D3,用S1控制D4-D7。
主程序循环控制8盏小灯流水变化。

--------
楼主把主程序,先编好。
之后,再加上中断部分。追问就是不懂怎么编,我们老师从来不讲为什么,直接让编程序。

追答主程序循环控制8盏小灯流水变化。
----
这还不会呀?

http://blog.163.com/asm_c/blog/static/2482031132013118115304/

参考。
以后,你再加上中断。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com