问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单片机用C语言编写中断的范例?

发布网友 发布时间:2022-05-26 15:17

我来回答

4个回答

热心网友 时间:2023-10-23 22:27

定时器溢出中断:
#include<reg51.h>

void timer0(void); //函数声明

void main()
{
P1^1 = 0;
TMOD = 0x01; //定时模式
THO = 0xEE;
TL0 = 0xFF; //定时时间
ET0 = 1; //中断允许
EA = 1; //总中断使能
TR0 = 1; //开始计时
while(1); //等待中断
}

void timer0(void) interrupt 1 using 0 //定时器0溢出中断
{
TR0 = 0; //停止计时
P1^1 = ~P1^1; //取反输出
THO = 0xEE;
TL0 = 0xFF; //重载定时时间
TR0 = 1; //开始计时
}

外部中断:
#include<reg51.h>

void it0(void)

void main()
{
P^1.1 = 0;
IT0 = 0; //触发方式
EX0 =1; //中断允许
EA = 1; //中断使能
while(1); //等待中断
}

void it0(void) interrupt 0 using 1 //外部中断0中断处理程序
{
P1^1 = ~P1^1; //取反输出
}

串口中断:
#include<reg51.h>

void suart(void);

void main()
{
P1 = 0xAA;
TMOD = 0x20; //设置定时器1为自动重载模式,作为波特率发生器
TH1 = 0xXX; //由波特率计算出来的定时值
TL1 = 0xXX; //
SCON = 0x50; //串口模式
ES = 1; //开放串口中断
EA = 1; //总中断使能
TR1 = 1; //
while(1) //等待中断
{
if(XXXX)
{
SBUF = 0xAA; //发送
}
}
}

void suart(void) interrupt 4 using 0
{
if(RI) //接受完臂
{
XXXXX;
}
if(TI) //发送完毕
{
XXXXX;
}
}

中断矢量程序入口: void 函数名(形参) interrupt 中断矢量 [using 寄存器]

热心网友 时间:2023-10-23 22:28

#include
sbit
csb_sat=
p1^0;
//定义超声波发生脚
void
delay(void)
//延时25微秒,12t芯片用12m误差
0us
{
unsigned
char
a;
for(a=11;a>0;a--);
}
void
csb_fs(int
dat)
{while(dat--){csb_sat=1;delay();csb_sat=0;delay();}}
//发射
void
main()
{
ea=1;
while(1)
{
csb_fs(10);
delay();delay();delay();delay();delay();delay();delay();delay();delay();
ie=0x83;
//int0允许中断
while(ie);
p1_1=1;delay();p1_1=0;delay();p1_1=1;delay();p1_1=0;delay();p1_1=1;delay();p1_1=0;delay();
}
}
void
int0_chuankou(void)
interrupt
0
using
1
//外部int0中断子程序
{
ie=0;//禁止int0中断
}

热心网友 时间:2023-10-23 22:28

//我用的是AT89S52 ,希望对你有帮助~!!
#include<reg52.h>
unsigned char m;
void main()
{
m=0;
EA=1; //开总中断
ET0=1; //开定时器0中断
TMOD=0x01; //定时器0工作在方式1,
TH0=(65536-50000)/256; //给定时器装初值,初值为:15536,也就是定时器计数50000次,如果你用12M晶振,这里等于50MS
TL0=(65536-50000)%256;
TR0=1; // 打开定时器,开始计时

if(m==20){
//如前面所说,计数器溢出一次为50MS,这里就是50MS*20=1S }

}
void time0() interrupt 1 using 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
m++;
}

热心网友 时间:2023-10-23 22:29

#include<reg52.h>
#define unchar unsigned char
unchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
static unchar num;
sbit port=P3^2;
//////////////////////延时
void delay(unchar z)
{int x,y;

for(x=z;x>0;x--)
for(y=100;y>0;y--);

}
/////////////////////
void main()
{EA=1;
EX0=1;
IT0=1;
num=0;
while(1);
}

void enter0() interrupt 0 using 2
{if(port==0)
{delay(500);
P0=table[num];
num++;
if(num==8)
num=0;}
else delay(50);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样打开oppor8315的移动磁盘,我想下点小说都不行 op手机r8315质量好不 酷狗音乐会员怎么开通划算?不同渠道价格对比 酷狗透视卡是什么意思 装甲输送车性能 M59履带式装甲人员输送车性能数据 车厘子和草莓是寒性水果吗-车厘子和草莓是凉性的吗 我想了解国寿鑫福临门年金保险 安卓手机如何把数据迁移到iPhone13上?最详细操作方法,小白都会 BIOS里的CSM是什么啊? 凌阳单片机 用C语言写中断的格式 该怎么写啊? 单片机用C语言编写中断的范例,顺便简述电路 用c语言写51单片机定时器中断判断按键是否按下该怎么写? 我想实现的功 如何用c语言编写一个可中断的程序 C语言如何使用键盘按键中止程序 C语言中,利用中断判断按键实现单击和长按,但是现在连续单击好几次也会导致开关机是代码哪里不对吗? C语言用键盘中断循环 单片机C程序按键中断 是不是的n次方n&gt;0都是减函数 住房公积金交了五年月交八百多还有一年多退休住房公积金还能贷款吗? 我今年10月退休,9月份还可用住房公积金贷款吗? 有没有处理笔记本电脑灰尘的好方法,高手过来 s开头的4个字母的霸气英文 有没有霸气带英文,最好有旋和丽这两个字 谁能帮我起一个霸气的英文名,最好带有“龙”字,有蕴涵但又不失霸气!谢谢 威风霸气的英文字母怎么写 26个英文字母中哪个字母最有霸气? 身份证丢了有什么危害? 视力表的标准是什么? 视力表0.1( 2.250)是什么意思 8051F040单片机C语言实现中断 在用c语言写单片机程序时 应该把什么写在中断什么写在主函数什么写在while里 关于AT89C2051的一个中断驱动C语言编程,懂单片机的高手进 上中专需要什么条件? 电大中专学历报考需要什么条件? 报考中专需要什么条件 怎样做出来的虎皮青椒,正宗又好吃? 宝马116i经常缺冷冻液怎么回事? 宝马116i防冻液放水孔在哪 宝马116漏防冻液。厂家管吗 宝马116i冷却液液位传感器在什么位置? 12款116i发动机的通病 14款宝马116i防冻液怎么排空气 12年的宝马118i要换防冻液吗 宝马冷却液(防冻液)是什么作用 日本电影《望乡》和《啊!野麦岭》是经典电影吗? 宝马116电动冷却液水泵换一个价格 宝马的防冻液是稀的还是浓稠 谈谈日本电影《望乡》中音乐的特色 化学毒素能引起耳石症吗?