当前位置:首页 > (完整版)单片机原理及应用——基于Proteus和Keil_C 林立_张俊亮毕业论文
unsigned int *ptr; unsigned int x,y,z; ptr=0x20; x=*ptr;
设置一个内部RAM指针
指向0x20单元 取第一个数 指向0x22单元 取第二个数
将两数中的较大者赋给z 指向地址为0x24的目标单元 将大数存入目标单元
ptr=0x22; y=*ptr;
z=(x>y)?x:y; ptr=0x24; *ptr=z; } 方法二:
#include unsigned int x,y,z; x=DBYTE[0X20]*256+DBYTE[0X21]; y=DBYTE[0X22]*256+DBYTE[0X23]; z=(x>y)?x:y; 将两数中的较大者赋给z DBYTE[0X24]=z256; DBYTE[0X25]=z%6; } 方法三: #include z=(x>y)?x:y; } 第5章 单片机的中断系统 习题 1.什么是中断、中断源、中断优先级和中断嵌套? 答:中断是指单片机内部有一个中断管理系统,它对内部的定时器事件、串行通信的发送和接收及外部事件(如键盘按键动作)等进行自动的检测判断。当CPU正在处理某件事情(例如正在执行主程序)的时候,外部或内部发生的某一事件(如某个引脚上电平的变化,一个脉冲沿的发生或计数器的计数溢出等)请求CPU迅速处理,于是,中断管理系统会置位相应标志通知CPU暂时中止当前的工作,迅速转去处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这样的过程称为中断。 引发中断的事件称为中断源。 将中断事件按轻重缓急分若干级别叫中断优先级。 允许中断优先级高的中断源中断正在执行的低优先级的中断服务程序叫中断嵌套。 2.什么叫中断源?MCS-51有哪些中断源?各有什么特点?它们的中断向量地址分别是多少? 答:中断源即引发中断的事件。 MCS-51单片机有5个中断源,它们是外部中断0,定时器T0,外部中断1,定时器T1,串行口。 外部中断源是由引脚的触发信号引起的中断,定时器中断源是由于定时器计数器的溢出引发的中断,串行口是由于串行通信的发送或接收引发的中断。 外部中断0,定时器T0,外部中断1,定时器T1,串行口五个中断源的中断向量地址依次为:0003H,000BH,0013H,001BH,0023H。 3.MCS-51中断的中断响应条件是什么? 答:(1) 中断源有中断请求; (2) 此中断源允许位为1,即中断源可以向CPU发中断请求; (3) CPU开总中断,即EA=1; (4) 无同级或者更高级中断正在服务 4.MCS-51的中断响应过程是怎样的? 答:(1) 将相应的中断优先级状态触发器置1,以阻断后来的同级和低级中断请求; (2) 由硬件清除相应的中断请求标志,串行口的发送和接收中断除外; (3) 执行一条硬件LCALL指令,即把程序计数器PC的内容压入堆栈保存,再将相应的中断服务程序的入口地址送入PC; 5.编写出外部中断1为下跳沿触发的中断初始化程序。 解: void Int1_init(){ } 6.有一外部中断源,接入端,当其中有中断请求时,要求CPU把一个从内部RAM 30H单元开始的50个字节的数据块传送到外部RAM从1000H开始的连续存储区。请编写对应的程序。 解: #include IT0=1 ; EA=1; EX0=1; IT1=1; EA=1;EX1=1; IE=0x84; IE|=0x84; } while(1) ; void intx0() interrupt 0 using 1{ char * ptr1=0x30; char xdata * ptr2=0x1000; for(i=0;i<50;i++) *ptr2++=*ptr1++; } 7.设fosc = 12MHz,利用定时器,TO(工作在方式2)在P1.1引脚上获取输出周期为O.4ms的方波信号,定时器溢出时采用中断方式处理,请编写,T0的初始化程序及中断服务程序。 解:fosc = 12MHz,则机器周期=1us;当T0工作在方式2时,其最大定时时间为256us,要输出周期为0.4mS即400us的方波信号,则其高、低电平应各为200us,显然当定时器T0按方式2工作时,只需计数达到200次即可,因此其时间常数初值为=56。在T0的中断服务程序中,只需将P1.1引脚求反即可。 #include
共分享92篇相关文档