单片机C51的中断程序应该怎么写

单片机C51的中断程序应该怎么写,第1张

主函数,对接口输出前,应该先把数据写入一个全局变量,如 aa = 0x。

然后再输出:P0 = aa;。

在中断函数结束前,也执行:P0 = aa;,即可显示出来中断前的灯光。

你指的“不对”是什么不对?是产生的脉冲频率不对?还是脉宽不对?还是程序运行不对?

常量20与变量Z是有本质差别的,程序运行的效果有差别也就是正常现象。原因是:

TH0=(65536-520)/256;

TL0=(65536-520)%256;

这种式子,编译器会把(65536-520)/256等式子计算出来,作为常数存贮在ROM中,程序运行时直接取用,速度很快。

TH0=(65536-5Z)/256;

TL0=(65536-5Z)%256;

这样的式子,编译器不可能先算出个值 来,只有程序运行过程中,才查询Z的值是多少,才能进行计算,这样一来,编译出的代码就包括了一系列计算过程,执行速度就慢得多。

对于像你这种定时时间很小的,受的影响就大了。

你应该把这样的计算放到主程序中,来减轻中断的压力。即:

xh=(65536-5Z)/256;

xl=(65536-5Z)%256;

然后,中断程序中写:

TH0=xh;

TL0=xl;

这就会改善很多。

1、中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。

2、中断服务程序:处理器处理"急件",可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的,这种处理"急件"的程序被称为--中断服务程序。

3、中断是处理器一种工作状态的描述。我们把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。

1、中断的处理过程为:关中断(在此中断处理完成前,不处理其它中断)、保护现场、执行中断服务程序、恢复现场、开中断。

2、通常中断源有以下几种:

(1)外部设备请求中断。

(2)故障强迫中断。

(3)实时时钟请求中断。

(4)数据通道中断。

(5)程序自愿中断。

3、中断系统的功能中断系统应具有的功能可归结为中断处理和中断控制。

(1)中断处理。中断处理包括发现中断请求、响应中断请求、中断处理和中断返回。

(2)中断控制。中断控制主要是实现中断优先级的排队和中断嵌套。

4、防止方法

(1)声卡:一些早期的ISA型声卡,系统很有可能不认,就需要用户手动设置(一般为5)

(2)内置调制解调器和鼠标:一般鼠标用COM1,内置调制解调器使用COM2的中断(一般为3),这时要注意此时COM2上不应有其它设备

(3)网卡和鼠标:此问题一般发生在鼠标在COM1口,使用中断为3,这时要注意通常网卡的默认中断为3,两者极有可能发成冲突。

(4)打印机和EPP扫描仪:在安装扫描仪驱动程序时应将打印机打开,因为两个设备中串联,所以为了防止以后扫描仪驱动程序设置有误,一定要将打印机打开再安装扫描仪驱动程序。

(5) *** 作系统和BIOS:如果计算机使用了"即插即用" *** 作系统(例如win98),应将BIOS中PNP OS Installed设置为Yes这样可让 *** 作系统重新设置中断。

(6)PS/2鼠标和BIOS:在使用PS/2鼠标时应将BIOS中PS/2 Mouse Function Control打开或设置为Auto,只有这样BIOS才能将IRQ12分配给PS/2鼠标用。

//sbit zd=P3^2; //外部中断口//unsigned char a;void main(void)//主函数{TCON=0x01;EX0=1; //外部中断允许EA=1;//开总中断while(1){//其他程序}}void int0(void) interrupt 0 //外部中断0 中断子程序{//这里面可以写中断子程序/a++;if(a==2) a=0;while(!zd)if(a) TR0=1; //开关计时器else TR0=0;/}由于对你的要求“按下INTO接的按键,使单片机执行间隔四灯轮流闪烁的中断子程序”不够理解,只能给你这样一个程序框架了进入中断要执行中断子程序,不同的中断源要进入不同的中断子程序。对于51的C编程,可以用中断标号,如‘interrupt 0’来使中断进入不同的中断。中断标号与它们的中断优先级一致,即外部中断0 interrupt 0定时器中断0 interrupt 1外部中断1 interrupt 2定时器中断1 interrupt3

以上就是关于单片机C51的中断程序应该怎么写全部的内容,包括:单片机C51的中断程序应该怎么写、单片机中断程序、1、什么是中断什么是中断服务程序什么是中断源等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10219544.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存