文档库 最新最全的文档下载
当前位置:文档库 › AVR培训(十一)

AVR培训(十一)

AVR培训(十一)
AVR培训(十一)

AVR 单片机技术(十一)AVR Microcontroller

E&C College AVR Training 2006Slide 3E&C College AVR Training 2006

Slide 4Slide 5

1.设置定时器工作模式

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 1000.000 kHz // Mode: Fast PWM top=FFh // OC0 output: Non-Inverted PWM TCCR0=0x69;TCNT0=0x00;OCR0=0x7F;

2.设定占空比OCR0寄存器0~255对应输出E&C College AVR Training 2006

上机练习Practice

1.设计1路D/A 输出,输出电压为

2.5V ,采用定时器0;

2.设计2路D/A 输出,输出电压一路为1V,另一路为4V ;采用一个定时器T1;硬件连线如下:

E&C College AVR Training 2006

Slide 8

A/D Structure

E&C College AVR Training 2006

Reference & Channel

E&C College AVR Training 2006

Slide 10

A/D 转换器参考电压、通道选择

Reference & Channel

// ADC initialization // ADC Clock frequency: 250.000 kHz // ADC Voltage Reference: AVCC pin // ADC Auto Trigger Source: None ADMUX=ADC_VREF_TYPE;ADCSRA=0x82;

//采用查询模式

#define ADC_VREF_TYPE 0x40

unsigned int read_adc(unsigned char adc_input ){

//通道号

ADMUX=adc_input|ADC_VREF_TYPE; //选择通道ADCSRA|=0x40;

// 启动A/D 转换

while ((ADCSRA & 0x10)==0); // 等待转换结束,查询模式ADCSRA|=0x10;//清除转换结束标志

return ADCW;//读取转换值

}

E&C College AVR Training 2006Slide 11E&C College AVR Training 2006

Slide 12

课后作业Homework

设计一个温度测控系统。

1.温度传感器采用热敏电阻,电阻特性表见附件。

2.温度高于26度,继电器1打开,继电器2关闭,低于24度继电器1关闭,继电器2打开。24-26度之间全部关闭

3.在液晶上显示实时温度。

4.写出程序流程图及编写程序。注:温度可以采用查表方式实现

2025.01

4552123.94662222.854772321.85

4892420.9

5002520

5122619.145232718.325342817.555452916.81

5563016.15673115.4357732

14.79

588

HomeWork

Slide 13

E&C College AVR Training 2006

习题(中断与接口及答案)

单片机练习三中断与接口 一.单项选择题 1. 已知MCS-51单片机系统晶振频率为12MHZ,SMOD=1,串行口工作于方式2的波特率为( A )。 A. 375K B. 1875K C. 2400K D. 1200K 2. MCS-51单片机T0作为计数器工作于不受外部信号INTO控制,T1作为定时器,T0工作于方式0,T1工作于方式1,其方式控制字的内容为( B )。 A. 00H B. 14H C. 17H D. 80H 3. 控制定时器工作方式的寄存器是( D )。 A. TCON B. PCON C. SCON D. TMOD 4. MCS-51单片机的中断允许触发器内容为83H,CPU将响应的中断请求是( D )。 A. INTO,INT1 B. T0, T1 C. T1, 串行接口 D. INTO,T0 5. 设定时器/计数器T0工作于方式3,则TH0作为一个独立的8位定时器,它的运行由控制位( D )。 A. GATE B. INTO C. TR0 D. TR1 6. 当MCS-51进行多机通信时,串行口的工作方式应选择( C )。 A.方式0 B.方式1 C. 方式2或方式3 D. 方式2 7. 8031单片机的串行口的中断程序入口地址为( B )。 B. 0023H C. 000BH D. 0003H 8. 已知单片机系统的fosc=6MHZ,执行下列延时程序的时间为( C )。 DY2: MOV R6, #2 DLP1: MOV R7, #250 DLP2: DJNZ R7, DLP2 DJNZ R6, DLP1 RET A.1ms B. C. 2ms D. 4ms 9. 串行口中断入口地址是( D )。 A. 0003H B. 000BH C. 0013H D. 0023H 10. 若MCS-51单片机的晶振频率为24MHZ,则其内部的定时器/计数利用计数器对外部输入脉冲的最高计数频率是( A )。 A. 1MHZ B. 6MHZ C. 12MHZ D. 24MHZ 11. MCS-51串行口工作于方式2时,传送的一帧信息为( C )。 A. 8位 B. 16位 C. 11位 D. 12位 12. MCS-51单片机有( B )内部中断源。 A. 2个 B. 3个 C. 4个 D. 5个 13. T1作为计数器,工作于方式2,不需门控位参于控制,其控制字为( A,C )。 A. 60H B. 06H C. 66H D. 00H 14. 已知(60H)=23H,(61H)=61H,运行下列程序62H内容为( A )。 CLR C MOV A, #9AH SUBB A,60H ADD A, 61H DA A MOV 62H, A A. 38H B. D8H C. DBH D. 3EH 15. 设系统的晶振频率为6MHZ,下列子程序DELAY的延时时间约为( B )。 DELAY: MOV R2, #0FAH L2: DJNZ R2, L2

AVR studio 中断、计时器程序

本程序应用了外部中断1、0,定时器中断0, 初始显示变量uname(100000), 按下中断1显示内容减1,中断0加1,定时器每隔一秒加1 显示子函数A VR_display; 频率1M A口接数码管段选 B口接数码管位选 */ #include #include volatile unsigned long Ex_i; //定时器用的变量 volatile unsigned long uname=100000;//初始显示内容 /*=====0-9=====A-G=====*/ unsigned char table[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //共阳极数码管的段码0 1 2 3 4 5 6 7 8 9 A B C D E F /*0-7*/ unsigned char num[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //共阳极数码管的wei码0 1 2 3 4 5 6 7 8 void init_avrinter();//外部中断初始化 void init_avrtimer0();//计数器0初始化 void delay(unsigned int x);//延时函数 void AVR_display(unsigned long nnn);//显示函数 int main() //主程序 { DDRA=0xff; //设置方向寄存器为输出 DDRB=0xff; DDRD=0xff; PORTD=0xff; init_avrinter(); init_avrtimer0(); while(1) { A VR_display(uname); } } void init_avrinter()//外部中断初始化 { sei(); //开总中断

外部中断实验

1 外部中断实验 一、实验目的 1掌握外部中断技术的基本使用方法 2掌握中断处理程序的编写方法 二、实验说明 1、外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.1)引入,本实验由INT0(P3.2)引入。 2、中断服务的关键: a 、保护进入中断时的状态。 堆栈有保护断点和保护现场的功能使用PUSH 指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。 b 、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。 c 、用POP 指令恢复中断时的现场。 3、中断控制原理: 中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP 。 4、中断响应的过程: 首先中断采样然后中断查询最后中断响应。采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。所谓查询就是由CPU 测试TCON 和SCON 中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。 INT0端接单次脉冲发生器。P1.0接LED 灯,以查看信号反转。 三、实验内容及步骤 1、使用单片机最小应用系统1模块,P1.0接发光二极管,INTO 接单次脉冲输出端。 2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,打开仿真器电源。 3、启动计算机,打开Keil 仿真软件,进入仿真环境。选择仿真器型号、仿真头型号、CPU 类型。 4、打开 中断.ASM 源程序,编译无误后,全速运行程序,连续按动单次脉冲产生电路的按键,发光二极管每按一次状态取反,即隔一次点亮。 5、可把源程序编译成可执行文件,烧录到89C51芯片中。 四、流程图及源程序 1、流程图 保护现场 设置初始状态 设置中断控制寄存器 开始 中断入口

AVR单片机教程13—第十三课 ATMEAG16L的外部中断编程实践

—————————————————————————— 第十三课ATMEAG16L的外部中断编程实践 本教程节选自周兴华老师《手把手教你学AVR单片机C程序设计》教程,如需转载,请注明出处!读者可通过当当网、淘宝网等网站购买本教程,如需购买配书 实验器材,可登陆周兴华单片机培训中心网购部自助购买! Atmega16L具有多达20个中断源,这里我们进行外部中断的实验,其它的等到介绍到相关内容时可进行适当的实验。 1.外部中断0 外部中断0由引脚INT0(PIND2)触发。如果INT0引脚按照MCUCR寄存器中的ISC01、ISC00设置的方式发生跳变,则不管是否lNT0中断使能,INT0中断标志位INTF0都将置位。如果SREG 寄存 器的全局中断位I和通用中断控制寄存器GICR中的INT0中断使能位INT0置位,则单片机培训开始 执行中断程序。在进入中断服务程序时,INTF0被硬件清零。必须指出,不管INT0(PIND2)引脚 方向位设置如何,只要INT0引脚发生规定的跳变,都会触发中断。中断标志位INTF0只在满足发生 中断的条件时置位,一旦条件变化,INTF0被硬件清零。向INTF0位写“1”也会对其清零。 2.外部中断1 外部中断0由引脚INT1(PIND3)触发。如果INT1引脚按照MCUCR寄存器中的ISC11、ISC10设置的方式发生跳变,则不管是否lNT1中断使能,INT1中断标志位INTF1都将置位。如果SREG 寄存 器的全局中断位I和通用中断控制寄存器GICR中的INT1中断使能位INT1置位,则开始执行中断程 序。在进入中断服务程序时,INTF1被硬件清零。必须指出,不管INT1(PIND3)引脚方向位设置 如何,只要INT1引脚发生规定的跳变,FPGA培训都会触发中断。中断标志位INTF1只在满足发生 中断的条件时置位,一旦条件变化,INTF1被硬件清零。向INTF1位写“1”也会对其清零。 3.外部中断2 外部中断2由引脚INT2(PINB2)触发。如果INT2引脚按照MCUCR寄存器中的ISC2设置的方式发生跳变,则不管是否lNT2中断使能,INT2中断标志位INTF2都将置位。如果SREG 寄存器的全局 中断位I和通用中断控制寄存器GICR中的INT2中断使能位INT2置位,则开始执行中断程序。在进 入中断服务程序时,INTF2被硬件清零。必须指出,不管INT2(PINB2)引脚方向位设置如何,只 要INT2引脚发生规定的跳变,都会触发中断。中断标志位INTF2只在满足发生中断的条件时置位, 一旦条件变化,INTF2被硬件清零。向INTF1位写“1”也会对其清零。 8.2.1 INT1中断实验

基于STM8的外部中断实验

例程四按键中断 其实在上个例程就说那个中断的,但不是重点说,例程四就重点说下这个中断的设置,主要是针对外部中断,对于其他的中断,到时在相应的模块里面会说的。在STM8S207RB这个芯片里面有很多IO口都可以触发中断的。主要是GPIO_A,GPIO_B,GPIO_C,GPIO_D,GPIO_E,这五组IO口都可以触发外部中断,所以大家以后要设计电路的话,必须先要查看先对应的文档来看下,了解清楚芯片的资料才好设置。其实大家学会调用库里面的函数的话,这些初始化相当来说就很容易的了。 以上外部中断的设置来自“STM8寄存器.pdf”文档第74页 下面看下电路图先吧,只要当你清楚电路具体的链接,才能完成相对应的初始化。

用到内部的资源 "stm8s_clk.h" "stm8s_exti.h" "stm8s_gpio.h" "stm8s_uart1.h" "stm8s_clk.c" "stm8s_exti.c" "stm8s_gpio.c" "stm8s_uart1.c" 看完了电路图,照样是先看主函数

在主函数里面最重要的是Buttom_Init();的初始化,其他的初始话上前几个例程已经有介绍过,相信大家也很清楚了。下面重点讲下Buttom_Init()。 函数原型: 第一条语句是设置Buttom1和Buttom2相对应的IO为上拉输入; 第二条语句是设置GPIOD,也即是按键,为下降沿触发中断。 __enable_interrupt();这条语句是开总中断,在上一个例程里面说过了,以后凡是有触发中断的都要用上这条语句,所以说这条语句很重要的。 下面讲下外部中断常用的几个函数,这些函数都是库有的,可以直接调用的。

习题(中断定时部分)

1、2 填空题 1、单片机计数器最大的计数值为 _____________ 。 2、当把定时器/计数器T0 定义为可自动重新装入初值的8 位定时器/计数器 时,________为8 位计数器,______为常数寄存器。 3、若系统晶振频率是12MHz,利用定时器/计数器T1 定时1ms,在方式1 下定时初值为__________。 4、当计数器产生计数溢出时,把定时器/计数器的TF0(TF1)位置“1”。对计数溢出的处理,在中断方式时,该位作为 _____位使用;在查询方式时,该位作_____位使用。 5、在定时器T0工作方式3下,欲使TH0停止工作,应执行一条______的指令。 6、在定时器工作方式1下,计数器的宽度为16位,如果系统晶振频率为6MHz,则最大定时时间为 _______,若系统晶振频率为12MHz,则最大定时时间为 ______。 7、8051单片机内部设有两个16位定时器/计数器,即_____ 和 _____。 8、T0由两个8位特殊功能寄存器_______和________组成,T1由 ______ 和______组成。 9、定时时间与定时器的______ 及______有关。 10、MCS-51的定时器/计数器T0的门控信号GATE设置为1时,只有______引脚为高电平且由软件使______置1时,才能启动定时器/计数器T0工作。 11、当T0为方式______ ,T1为方式______的时候,8051单片机的定时器可提供3个8位定时器/计数器。 12、定时器/计数器的工作方式3是指的将____________拆成两个独立的8位计数器。而另一个定时器/计数器此时通常只可作为_________________使用。13、8051单片机外部中断请求信号有电平触发方式和__________触发方式两种。在电平触发方式下,当采集到INT0、INT1的有效信号为__________时,激活外部中断。 14、8051单片机的P0~P3口均是______位I/O口,其中的P0口和P2口除了可以进行数据的输入/输出外,通常还用来构建系统的______________和 _____________。当连接输入/输出设备时,常选_________做输入/输出口。 二、选择题 1、在下列寄存器中,与定时/计数控制无关的是() A、TCON B、TMOD C、SCON D、IE 2、在工作方式0下,计数器是由TH的全部8位和TL的5位组成,因此其计数范围是() A、1~8192 B、0~8191 C、0~8192 D、1~4096 3、如果以查询方式进行定时应用,则应用程序中的初始化内容应包括()

AVR单片机WinAVR及Proteus仿真外部中断

本文主要以AVR单片机atmega48的外部中断的在Proteus上仿真的例子介绍AVR单片机C 语言开发环境WinAVR的使用(如何包含头文件,如何写中断服务程序,如何配置编译产生hex文件),及其在Proteus上的仿真实现(如何建立仿真图,载入hex文件进行仿真) 本例子完全为PC上软件仿真所以不涉及硬件,其全部所需软件清单如下: WinAVR、Proteus、atmega48_Datasheet 软件的下载安装,请参考网上其他教程,有很多,很容易的。 atmega48单片机的数据手册网上中英文的版本也都可以下载到。 下图是笔者所使用的软件截图,不同版本可能稍有差异,但基本不影响使用。 下面我将在假设您已经安装好2个软件(当然目前您不需要知道它们是怎么用的),并且对单片机和C语言有基本了解的基础上进行例程的演示。 let's begin。 首先要明确我们要完成的功能:单片机开始工作后,点亮LED灯1S,灭掉LED灯1S,如此循环3次,然后单片机进入无限循环,等待外部按键button按下,LED等再次点亮,当再次按下button时,LED等灭掉,如此循环。

接着画出要实现这个功能的电路,以便后续仿真。 先在桌面建一个文件夹Hello_AVR,如图。 打开软件,这个图标。 在软件界面上,右键Place->Component->From Libraries 在Keywords里面输入atmega48,选择一个32PIN管脚的单片机放到图上

同样的方法,放置一个LED灯,一个button,电阻,电容。

放置POWER和GND

图完成,在文件夹Hello_AVR下新建文件夹Sim,保存在这里 这里用PB0管脚来驱动LED灯,查阅芯片的数据手册或直接从图中可以知道,外部中断0(INT0)在PD2管脚。而且Proteus的好处是,这里我们给单片机画电源的麻烦也可以省去。 接下来要做的就是看数据手册和建立工程,编程,编译的事了。 打开Programmers Notepad File->New->Project新建工程Hello_AVR,保存到Hello_AVR文件夹

单个外部中断实验

一、 实验要求 在单片机的外中断输入引脚INT0————(或INT1———— ),接一个按键开 关来产生外部中断请求,通过P1口连接的8个LED 发光二极管的状态,来反映外中断的作用。 中断未发生时,P1口连接的8个LED 为流水状态,当按键 开关按下,即外部中断请求产生时,8个LED 呈现闪烁状态。按键开关松开,8个LED 又为流水状态。 二、 实验目的 (1) 理解掌握外部中断源、中断请求、中断标志、中断入口 等概念。 (2) 掌握中断程序的设计方法。 程序如下: ORG 0000H //程序入口 LJMP MAIN //跳入主程序入口MAIN ORG 0003H //INT0中断入口 LJMP INT0P ORG 0030H MAIN: SETB EA //中断允许总开关控制位 SETB EX0 //允许外部中断0中断 SETB PX0 //外部中断0中断为高优先级 START:MOV R2,#8 MOV A,#0FEH //为点亮引脚发光二极管需写入P1口的点亮控制码 LOOP: MOV P1,A //点亮控制码写入P1口,点亮相应的LED

LCALL DELAY //调用延时子程序 RL A //点亮控制码循环左移,点亮下一位 DJNZ R2,LOOP //判断左移是否超过8位,未超过继续循环 LJMP START //左移循环已8次,再重新进行下一次循环点亮 INT0P: PUSH PSW //保护现场 PUSH Acc NOLIG: JNB IE0,IT0R MOV P1,#00H LCALL DELAY MOV P1,#0FFH LCALL DELAY LJMP NOLIG IT0R:RETI DELAY: MOV R5,#60 //延时子函数 D1: MOV R6,#20 D2: MOV R7,#248 D3: DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 程序如图:

avr睡眠模式(包涵源程序)

AVR单片机电源管理及睡眠模式应用实例(含源代码) AVR单片机电源管理及睡眠模式应用实例(含源代码) /*********************************************** **** AVR 电源管理_睡眠模式范例 *** **** *** **** 作者: HJJourAVR *** **** 编译器:WINAVR20050214 *** **** *** ***********************************************/ /* 本程序简单的示范了如何令AVR ATMEGA16进入睡眠状态及唤醒 电源管理及睡眠模式的介绍 进入最低耗电的掉电模式 关闭各种模块 外部中断唤醒 M16掉电模式的耗电情况(看门狗关闭),时钟为内部RC 1MHz 0.9uA@Vcc=5.0V [手册的图表约为1.1uA] 0.3uA@Vcc=3.3V [手册的图表约为0.4uA] //测量的数字万用表是FLUKE 15B,分辨率0.1uA 这个程序需要MCU进入休眠状态,为实现最低功耗,JTAG接口会被关闭,只能通过LED的变化来观察程序的运行。 这个实验里面,用STK500(AVRISP) ISP下载线来烧录更方便。 熔丝位设置 1 关断BOD功能 BODEN=1 2 如果用ISP方式烧录,就可以完全关闭JTAG口了 OCEEN=1,JTAGEN=1 */ #include #include #include #include //时钟定为内部RC 1MHz,F_CPU=1000000 也可以采用其他时钟 #include /* sleep.h里面定义的常数,对应各种睡眠模式 #define SLEEP_MODE_IDLE 0 空闲模式 #define SLEEP_MODE_ADC _BV(SM0) ADC 噪声抑制模式

外部中断实验

实验二外部中断实验 一.实验目的 1.学习外部中断技术的基本使用方法; 2.学习中断处理程序的编程方法。 二.实验设备及器材配置 1.单片机仿真实验系统。 2.计算机。 3.导线。 三.实验内容 在以下实验题目中任选一个或由老师指定。 1.P1口做输出口,接八只发光二极管,编写程序,使其循环点亮。以单脉冲输出端做为中断申请,当第一次产生外部中断时,使发光二极管全亮,延时1秒后返回中断之前的状态;当第二次产生外部中断时,使发光二极管全灭,延时1秒后返回中断之前的状态;以后如上述一直循环下去。 2.以单脉冲输出端做为中断申请,自行设计连线,用实验箱上的红、绿、黄发光二极管模拟交通灯控制。当有急救车通过时,两交通灯信号为全红,以便让急救车通过,延时10秒后交通灯恢复中断前状态。 四.实验原理说明 本实验中中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能返回中断前P1口及发光二极管的状态。除了保护累加器A、程序状态字PSW外、P1口的状态外,还要注意主程序中的延时程序和中断程序的延时程序不能混用,本实验中,主程序延时程序用的寄存器和中断延时用的寄存器也不能混用。 五.连线方法及实验电路 8031的P1.0—P1.7分别接发光二极管L0—L7,P3.2接单脉冲输出端“ ” 外部中断实验电路如图1-3所示。

图1-3 外部中断实验电路 六.思考题及实验报告要求 1.思考题 (1).试说明51系列单片机外部中断如何使用。 (2).修改程序,外部中断产生时,使发光二极管闪亮移位方向改变。 2.实验报告要求 (1).给出自行设计的程序清单、程序流程图。 (2). 总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。 VW集成调试软件使用 1.自建以字母开头的文件夹,推荐在F盘。 2.双击桌面V/W快捷方式 3.左击【文件】-新建文件-保存文件(存于自建文件夹下,以字母开头,后缀为.ASM或.C) 4.左击【文件】-新建项目-(以字母开头,存于自建文件夹下,加入自存的汇编或C源程序) 5.编写程序 6. 左击【项目】-编译,根据提示将提示的错误位置修改,编译,直至程序无错。 7.实验箱断电、连线完毕后,打开实验箱电源开关。左击【仿真器】,在出现的窗口中选择LAB8000\MCS51\8031AH或A T89C51,晶体频率:6000000Hz。 8. 左击【执行】-全速运行,在实验箱上观察运行结果。

外部中断0实验程序

51单片机第十四课外部中断0实验 #include #define uchar unsigned char #define uint unsigned int sbit led0=P0^0; unsigned char code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71,0x00}; unsigned char code smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78}; //************************************************ //延时函数,在12MHz的晶振频率下 //大约50us的延时 //************************************************ void delay_50us(uint t) { uchar j; for(;t>0;t--) for(j=19;j>0;j--); } //************************************************ //延时函数,在12MHz的晶振频率下 //大约50ms的延时 //************************************************ void delay_50ms(uint t) { uint j; for(;t>0;t--) for(j=6245;j>0;j--); } void main() {

AVR单片机外部中断0、1、2详解

AVR单片机外部中断0、1、2 详解 中断基本包含: 1.中断源 2.中断向量(中断入口地址) 3.中断优先级 4.中断函数 除此之外,在单片机中,中断的执行或者中断的触发必 须符合以下的规则:中断触发|执行= 全局中断使能位AND 中断源使能位AND 中断源标志位 单片机内部中断的触发必须完成,全局中断使能,中断 源使能,中断源标志位置一等条件。除此之外,如果是 外部中断0,1,2(INT0,1,2),必须设置引脚触发的规则。最后呢,就是需要在程序里建立处理中断的中断 函数。 在编程的时候的步骤大致如下:(无视INT2) 1. 初始化PD2,PD3 为输入状态。DDRD|=BIT(2)|BIT(3); 2. 设置INT0,1 引脚触发的规则,实验中为低电平触发。MCUCR=0xF0; 3. 设置INT0,1 中断源使能位为逻辑1。 GICR|BIT(7)|BIT(6); 4. 清除INT0,1 的中断标志位(软件写入,逻辑1 为清

除)。GIFR|=BIT(7);BIT(6); 5. 全局中断允许位使能。SREG|=BIT(7); 6. 编辑中断处理函数。 /*ATmega16提供3个外部中断,分别由INT0、INT1和INT2引脚触发。 需要注意的是,如果将ATmega16设置为允许外部中断,则即使把INT0、INT1和INT2引脚 设置为输出方式,外部中断仍然会被触发。外部中断可选择采用上升沿触发、下降沿触发和 低电平触发(INT2中断只能采用沿触发方式。 */ #include; #include; #include "smg.h" /*1.状态寄存器SREG bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 I T H S V N Z C I:全局中断使能位。 在I置位后,单独的中断使能由不同的中断寄存器控制。若I为0,则禁止中断。 MCU 控制寄存器- MCUCR MCU 控制寄存器包含中断

实验二 外部中断实验

实验二外部中断实验 一、实验目的 1.掌握外部中断技术的基本使用方法 2.掌握中断处理程序的编写方法 二、实验原理 1.外部中断的初始化设置的三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式. 2.中断服务的关键: (1)保护进入中断时的状态。 堆栈有保护断点和保护现场的功能使用PUSH,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。注:中断程序自动保护PC,对其做入栈操作 (2)用POP指令恢复中断时的现场。(先进后出) 3.中断控制原理: 中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。 TCON格式(中断控制字) TF1、TF0:定时器/计数器T的溢出中断请求标志位; TR1、TR0:计数器控制位TR1(TR0)=1启动定时器TR1(TR0)=0停止计数器 IE1:外部中断请求1标志位; IT1:IT1=0为低电平触发IT1=1为负跳变有效; IE0:外部中断请求0标志位; IT0:IT0=0为低电平触发IT0=1为负跳变有效; 复位后TCON被清零,中断请求被禁止。

SCON格式(触发方式中断控制字) TI:串行口的发送中断请求标志位。发送1帧串行数据后,硬件自动为TI置1。注:CPU不会为T1清零,需要在中断程序中用软件为TI清零 RI:串行口接受中断请求标志位。接收完1帧串行数据后,硬件自动为RI置1。注:CPU不会为R1清零,需要在中断程序中用软件为RI清零 三、实验内容 参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为下降沿触发时,LED灯全亮。中断结束后LED继续接上次状态进行跑马灯闪烁。注:注意保护现场。且编译器不支持工作组寄存器名(R0-R7)入栈,需要对栈地址操作。例:PUSH 06H (累加器支持左移右移不支持压栈出栈; 工作组寄存器不支持左移右移支持压栈出栈);把R6入栈等同PHSHU R6 四、实验步骤 1.使用单片机最小应用系统1模块,P1接发光二极管,INTO接单次脉冲输出端。 2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。 3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加**.ASM源程序,进行编译,直到编译无误。 4.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。 五、参考程序 汇编语言: ORG 0000H LJMP START ORG 0003H LJMP INT ORG 0030H INT: PUSH 05H PUSH 06H PUSH 07H MOV P1,#00H ACALL DELAY POP 07H POP 06H POP 05H RETI START: MOV IE,#81H MOV TCON, #01H MOV A, #0FEH

习题(中断与接口及答案)

中断与接口及答案 一.单项选择题 1. 已知MCS-51单片机系统晶振频率为12MHZ,SMOD=1,串行口工作于方式2的波特率为()。A. 3750K B. 1875K C. 2400K D. 1200K 2. MCS-51单片机T0作为计数器工作于不受外部信号INTO控制,T1作为定时器,T0工作于方式0,T1工作于方式1,其方式控制字的内容为()。 A. 00H B. 14H C. 17H D. 80H 3. 控制定时器工作方式的寄存器是()。 A. TCON B. PCON C. SCON D. TMOD 4. MCS-51单片机的中断允许触发器内容为83H,CPU将响应的中断请求是()。 A. INTO,INT1 B. T0, T1 C. T1, 串行接口 D. INTO,T0 5. 设定时器/计数器T0工作于方式3,则TH0作为一个独立的8位定时器,它的运行由控制位()。 A. GATE B. INTO C. TR0 D. TR1 6. 当MCS-51进行多机通信时,串行口的工作方式应选择()。 A.方式0 B.方式1 C. 方式2或方式3 D. 方式2 7. 8031单片机的串行口的中断程序入口地址为()。 A.001BH B. 0023H C. 000BH D. 0003H 8. 已知单片机系统的fosc=6MHZ,执行下列延时程序的时间为()。 DY2:MOV R6,#2 DLP1:MOV R7,#250 DLP2:DJNZ R7,DLP2 DJNZ R6,DLP1 RET A.1ms B. 1.5ms C. 2ms D. 4ms 9. 串行口中断入口地址是()。 A. 0003H B. 000BH C. 0013H D. 0023H 10. 若MCS-51单片机的晶振频率为24MHZ,则其内部的定时器/计数利用计数器对外部输入脉冲的最高计数频率是()。 A. 1MHZ B. 6MHZ C. 12MHZ D. 24MHZ 11. MCS-51串行口工作于方式2时,传送的一帧信息为()。 A. 8位 B. 16位 C. 11位 D. 12位 12. MCS-51单片机有()内部中断源。 A. 2个 B. 3个 C. 4个 D. 5个 13. T1作为计数器,工作于方式2,不需门控位参于控制,其控制字为()。 A. 60H B. 06H C. 66H D. 00H 14. 已知(60H)=23H,(61H)=61H,运行下列程序62H内容为()。 CLR C MOV A,#9AH SUBB A,60H ADD A,61H DA A MOV 62H,A A. 38H B. D8H C. DBH D. 3EH

实验二 按键中断实验

实验二按键中断实验 一、实验目的 了解中断的含义 二、实验内容 板子加电后,按动板子上K1-K3按键,可控制对应的LED1-LED3的亮灭,该实验学习了外部中断(EXTI)程序的编制及控制流程。 三、实验仪器、设备 计算机、开发板、keil软件 四、硬件设计 在开发板上V6、V7、V8分别与MCU的PB5、PD6、PD3相连,如下图所示 键盘部分如下图所示: 例程所用到的列扫描线:PC5,PC2,PC3。 例程所用到的行扫描线(EXTI中断线):PE2。

五、实验要求和步骤 开发板上有3个蓝色状态指示灯V6(LED1),V7(LED2),V8(LED3),通过对应的按键K1-K3,控制LED的亮灭,将PE2引脚配置为外部中断,当其上出现下降沿时产生一个中断,根据扫描PC5,PC2,PC3来判别是哪个按键按下。 首先我们了解一下什么是外部中断/事件控制器(EXTI)。 外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以被独立的屏蔽。挂起寄存器保持着状态线的中断要求。 EXTI控制器的主要特性如下: 每个中断/事件都有独立的触发和屏蔽 每个中断线都有专用的状态位 支持多达19 个中断/事件请求 检测脉冲宽度低于APB2 时种宽度的外部信号 如要产生中断,中断线必须事先配置好并被激活。这是根据需要的边沿检测通过设置2个触发寄存器,和在中断屏蔽寄存器的相应位写“1”到来允许中断请求。当需要的边沿在外部中断线上发生时,将产生一个中断请求,对应的挂起位也随之被置1。通过写“1”到挂起寄存器,可以清除该中断请求。为产生事件触发,事件连接线必须事先配置好并被激活。这是根据需要的边沿检测通过设置2个触发寄存器,和在事件屏蔽寄存器的相应位写“1”到来允许事件请求。当需要的边沿在事件连线上发生时,将产生一个事件请求脉冲,对应的挂起位不被置1。通过在软件中断/事件寄存器写“1”,一个中断/事件请求也可以通过软件来产生。 本次实验需要组件的工程文件文档如下: USER--stm32f10x_it.c 为中断服务程序主程序,我们对主程序进行一次详细的注释。 //______________________主程序____________________________________________________________________ int main(void) { unsigned char a=0,b=0,c=0; /*完成对系统时钟的设置,例程中通过系统时钟设置函数,外接晶振采用8Mhz,经过片内频率合成,9倍频,设置为72MHz的时钟。*/ RCC_Configuration(); /*嵌套向量中断控制器

中断习题和参考题参考答案(课后)

中断习题和参考题 1、什么是中断向量?中断向量表是什么?非屏蔽中断的类型为多少?8086 中断系统优先级顺序怎样? ①所谓中断响量,实际上就是中断处理子程序的入口地址,每个中断类型对应一个中断响量 ②中断向量按照中断类型的顺序在内存0段0单元开始有规则排列的一张表 ③类型02H ④内部中断>非屏蔽中断>可屏蔽中断>单步中断 2、8259的全嵌套和特殊全嵌套方式有何异同?优先级自动循环是什么?什么特殊屏蔽方式?如何设置成该方式? ①全嵌套方式是8259A最常用的工作方式,只有在单片情况下,在全嵌套方式中,中断请求按优先级0-7进行处理,0级中断的优先级最高。特殊全嵌套方式和全嵌套方式基本相同,只有一点不同,就是在特殊全嵌套方式下,还可满足同级中断打断同级中断,从而实现一种对同级中断请求的特殊嵌套,而在全嵌套方式中,只有当更高级的中断到时,才会进行嵌套。 ②优先级自动循环方式一般在系统中多个中断源优先级相等的场合。在这种方式下,优先级队列是在变化的,一个设备受到中断服务以后,它的优先级自动降为最低。 ③仅仅禁止同级中断嵌套,开放高级中断和低级中断④两步:1步设置OCW 3 , 设置成特殊屏蔽方式,2步设置OCW 1 屏蔽某级中断。 3、8259有几种中断结束方式?应用场合如何? 1.中断自动结束方式,不需要设置中断结束命令,在单片系统中且不会出现中断嵌套时用。 2.一般中断结束方式,在全嵌套方式下用。 3.特殊中断结束方式,在任何场合均可使用。 4、8259的ICW 2 与中断类型码有什么关系?说明类型码为30H,36H,38H的异同。 ①高五位相同,低三位不同(中断类型码的低三位和引脚的编码有关,ICW2的低三位无意义) ②30H,36H高五位相同,ICW 2=30H, 30H为8259A IR 对应的中断类型码, 36H为8259A IR 对应的中断类型码。 38H ICW 2=38H 38H为8259A IR 对应的中断类型码

AVR学习总结

目录 中断学习 (2) E2PROM学习 (3) 时钟系统及时钟源的学习 (5) 系统复位学习 (5) I/O端口的学习 (6)

中断学习 中断的过程:CPU 检测中断的产生(总是在每条指令的最后检测中断请求),然后响应中断,进入中断服务函数处理。 CPU 检测到中断并不是立即响应,而是有条件的: 1. 设立中断请求触发器 2. 设立中断屏蔽触发器 3. 总中断是开放的 4. CPU 现行指令结束后执行中断 Mega 有20个中断源,包括3个外部中断(int0、int1、int2)和18个内部中断。 与中断有关的寄存器: GIFR 通用中断标志寄存器: GIFR : 产生中断时由CPU 自动置1,响应后自动置0。 GICR 通用中断控制寄存器: GICR : 位7—5为外部中断0、1、2使能,该位置1且全局中断使能置1即响应外部中断。 位4—0与外部中断无关,为中断向量标号的选择有关。 SREG 状态寄存器: SREG : 全局中断使能标志位,置1时使能全局中断(asm (”SEI ”)),响应后应使其置0(asm (”CLI ”))。 MCUCR 单片机控制寄存器: MCUCR : Bit7—4 Bit1、0

MCUCSR 单片机控制和状态寄存器: MCUCSR : 外部中断2触发方式设置:Bit6写0为下降沿触发,Bit6写1为上升沿触发。 外部中断的初始化可以为以下步骤: 1. 设置外部中断的触发方式(0、1时设置MCUCR ;2时设置MCUCSR )。 2. (清零GIFR 寄存器对应的位,此步骤可省略。另外,此寄存器可用来做可读寄存器, 通过判断完成一些操作)。 3. 打开对应外部中断的控制位(GICR )。 4. 打开全局中断使能为I (SREG )。 5. 写中断服务函数。格式为: #pragma interrupt_handler … 阴影标注部分是必须的,func1是函数名,vector number 是中断向量标号,在头文件中定义的向量号一般前加 ”iv_中断源名称”,宏定义相当于直接使用向量号,但用起来意义明显。 注意:外部中断源的引脚一定要设置成输入作为中断检测的输入接口,而且一定要设置成带上拉电阻的方式(DDRD=0x00,PORTD=0xFF ),否则PD 端口一直为低电平就会一直触发中断。 在ICCA VR 中可以用Wizard 来生成服务程序,一个很简单的工具。只需对生成代码做简单的修改即能完成相应的功能,节省的代码的书写,同时提高了编程的效率。 E 2 PROM 学习 Mega16有512Bytes 的E 2PROM ,用户可以通过操作其控制寄存器来实现对其读写即对E 2PROM 各存储单元的访问。 与E 2PROM 有关的寄存器: EEAR 地址寄存器(分为两个字节EEARH 、EEARL ): EEARH : EEARL : E 2PROM 的初值无定义,因此必须为其赋一个确定的数值。 EEDR 数据寄存器: EEDR :

习题(中断与接口及答案)

一.单项选择题 1. 已知MCS-51单片机系统晶振频率为12MHZ,SMOD=1,串行口工作于方式2的波特率为()。 A. 3750K B. 1875K C. 2400K D. 1200K 2. MCS-51单片机T0作为计数器工作于不受外部信号INTO控制,T1作为定时器,T0工作于方式0,T1工作于方式1,其方式控制字的内容为()。 A. 00H B. 14H C. 17H D. 80H 3. 控制定时器工作方式的寄存器是()。 A. TCON B. PCON C. SCON D. TMOD 4. MCS-51单片机的中断允许触发器内容为83H,CPU将响应的中断请求是()。 A. INTO,INT1 B. T0, T1 C. T1, 串行接口 D. INTO,T0 5. 设定时器/计数器T0工作于方式3,则TH0作为一个独立的8位定时器,它的运行由控制位()。 A. GATE B. INTO C. TR0 D. TR1 6. 当MCS-51进行多机通信时,串行口的工作方式应选择()。 A.方式0 B.方式1 C. 方式2或方式3 D. 方式2 7. 8031单片机的串行口的中断程序入口地址为()。 B. 0023H C. 000BH D. 0003H 8. 已知单片机系统的fosc=6MHZ,执行下列延时程序的时间为()。 DY2: MOV R6, #2 DLP1: MOV R7, #250 DLP2: DJNZ R7, DLP2 DJNZ R6, DLP1 RET A.1ms B. C. 2ms D. 4ms 9. 串行口中断入口地址是()。 A. 0003H B. 000BH C. 0013H D. 0023H 10. 若MCS-51单片机的晶振频率为24MHZ,则其内部的定时器/计数利用计数器对外部输入脉冲的最高计数频率是()。 A. 1MHZ B. 6MHZ C. 12MHZ D. 24MHZ

相关文档