AVR16单片机考试题
一、选择题
1、单片机的基本组成结构包括:CPU、程序存储器、、输入接口、输出接口五大部分() A、EEPROM B、数据存储器C、ROM D、堆栈 2、ATMEL公司生产的单片机以三大系列为主,其中XMEGA是属于()
A、低档单片机 B、中档单片机C、高档单片机 D、普通单片机 3、单片机的三总线结构是指:数据总线、地址总线和______() A、控制总线 B、采集总线C、接收总线 D、发送总线 4、单片机的数据存储器包含和两大部分。( ) A.ROM RAM B.EEPROM CPU
C. RAM EEPROM D.ROM CPU 5、T/C0工作在普通模式时,初值 ,满值。( )
A.为0 为255 B. 由TCNT0设定 为255 C. 由OCR0设置 255 D. 0 由OCR0设置 6、共阳数码管的公共级接且每段的电压为 时,数码管点亮( ) A.GND VCC B. GND CPUC. VCC CPU D.VCC GND 7、DDRX的值设为时,I/O口输出。( ) A、0 B、1C、2 D、3
8、AVR的8位定时器/计数器有种工作方式() A.1 B. 2C. 4 D. 8
9、定时器1的中断屏蔽寄存器是_______ ()
A. TCNT1 B.OCR1C. TCCR0 D.TIMSK 二、填空题
1、 AVR16单片机是____8__位单片机,ATmegal16L与ATmega16的区别是什么:__Atmega16L支持电压2.7 ~5.5V,频率:0~8Mhz,Atmega16支持电压:4.5~5.5V,频率:0~16Mhz(提示:可以从供电电压和支持的晶振频率上两方面考虑)
2、 单片机XTAL1、XTAL2这两个引脚的作用分别是什么:_反向振荡放大器与片内时钟操作电路的输入端_、_反向振荡放大器的输出端_
3、 引脚AVCC的作用:_AVCC是端口A与A/D转换器的电源___ 4、 引脚AREF的作用:_A/D 的模拟基准输入引脚
5、 在我们平时编写单片机程序时,我们通过____ISP________方式将程序下载到单片机的
__FLASH____存储器中。
6、 端口A为8位双向I/O口,具有可编程的内部上拉电阻,作为输入使用时,如内部上拉
电阻使能,端口被外部电路拉低时将__输出_电流。
7、 中断向量地址与其优先级的关系是:_中断向量地址越小其优先级越高___。
8、 AVR中断控制寄存器的名字是:___GICR__,如何配置打开全局中断__SREG=0x80; 或者sei();__(任意一种方式)。
9、 AVR结构具有两个主要的存储器件:__数据存储器____和__程序存储器__ 10、 Atmega16具有___16___字节的在线编程Flash,用于存放__程序指令代码___,所
有的AVR指令为___16___位或者___32__位 11、 数据存储器SRAM的存储空间被分为:__32个通用寄存器__、_64个IO寄存器___
以及__1024_字节的内部SRAM空间。 12、 ATmega16中含有__512字节___的EEPROM。它的擦写次数是10万次,具有掉电后
不丢失数据 、通过系统程序可以随机修改__。 13、 单片机的数据存储器包含RAM 和 EEPROM 两大部分,其中 EEPROM是RAM的
补充。 FLASH ROM支持用户多次擦除和写入代码,可以实现10万次的____写入_____(填读写或写入) 15、 AVR单片机的复位源包括:__上电_复位、__看门狗__复位、__外部(RESET)___
复位以及掉电检测复位和JTAG复位 14、
16、
看门狗的驱动源是:___由独立的 1 Mhz 片内振荡器驱动___
17、 单片机内的每个端口都有___3__个I/O存储器地址,分别是:__PORTx___、
___DDRx______、____PINx____ 18、 ATmega16的工作电压是_____5V_(4.5 ~ 5.5V均可)____ , 所能使用的最高晶
振频率为 ______16Mhz_____。 19、 列举一个简单的芯片引脚复用的例子:___A/D转换、ISP下载、IIC通信等_______________ 20、 AVR16单片机,PDIP封装形式,共有__40__个引脚,TQFP封装形式,共有__44__个引脚。其中,可编程I/O口共有__32__个。 21、 16位定时器、计数器计到_____0xffff______(十六进制、十进制均可)时,
达到最大值MAX。 22、 USART是什么:______通用同步异步串行收发器_______,它与UART的区别
是什么:______UART只支持异步操作______ 23、 USART的方框图中描述了USART的三个主要组成部分,分别是_____发送器___、
______时钟发生器_____以及接收器 24、 串口通信有_2__种方式,分别是__同步和异步__,在我们单片机程序调试中,
使用的是哪种串口通信形式____异步通信____ 25、 TWI支持___7__位地址寻址空间,允许有__128____个从机。
26、 TWI总线空闲为____高__电平,数据的有效性规定是什么__在时钟线给高电平
期间,数据线上电平必须稳定_________________ 27、 AVR单片机采用____harvard___________体系结构,它的优点是什么___指令与与数据空间完全分开,分别通过专用的数据总线与的 CPU 据交换,实现了对程序和数
据的同时访问,并且提高了执行效率和数据的吞吐率____ 28、 CPU的基本功能是进行__算术_、__逻辑___、__比较__等运算和操作,并将运算结
果设置到相应的__寄存器___和存储器中。 29、 单片机执行命令是在___控制电路___的控制下进行的。首先从___程序存储器____
中读出指令,送___指令寄存器____保存,然后送____指令译码器___进行译码,译码结果送到定时控制逻辑电路,由定时控制逻辑产生各种控制信号和定时信号,再送到系统给的各个部件去进行相应的操作。这就是执行一条指令的全过程,执行程序就是不断重复这一过程。 30、 LCD12864共有两种接线方式,分别是:____串行连接____和___并行连接______,
我们使用的是:___并行连接_____。在这种接线方式中,控制引脚使用了__3__个,数据引脚使用了__8__个。 31、 LCD12864最多可显示____32___个汉字,最多可显示____64___个英文字符。 32、 DS1307在寄存器中存储时间时,采用______BCD码_____格式的数据。 33、 DHT11与主机通信方式:_____单总线____ 三、简答题
1、 一个轻触开关的一端接到了GND上,另一端接到了单片机引脚PA0上,简述如何检测
这个开关被按下了(引脚配置用程序说明,其它的可以用语言描述)? //配置成输入上拉 DDRA &= ~_BV(PA0); PORTA |= _BV(PA0);
//检测低电平
While( !(PINA & _BV(PA0)) ){ Return 0x01; }
2、 简述操作定时器的基本步骤?
提示:在你实际使用定时器的过程中,所需要完成的操作都要描述,例如增加什么头文件等
#include Timer1_init() { //设定时钟频率 //设计计时时间 //打开定时器溢出中断开关 }
ISR(TIMER1_OVF_vect) { //重装定时器 //溢出中断之后的具体操作 } Int main(void)
{ //开总中断开关 SREG = 0x80; 或者sei(); }
3、 USART的数据帧格式包括什么?在我们实际使用中,通常使用怎样的数据帧格式?
1位的起始位 5 ~ 9位的数据位 1位的校验位 1~2位的停止位
1位的起始位,8位的数据位,不校验,1位停止位
4、 简述TWI硬件组成上包括什么?每一帧的9位数据中包括什么信息(开始信号的第一帧
地址包)?主机收到从机的最后一个字节的数据时,如何发出“结束传送信息”的信号,简述这个过程?
两根线,一根SDA数据线,一根SCL时钟线。 7位的地址数据、1位的读写位、1位应答位。
主机对从机的传输的最后一帧数据采取非应答的方式,从机释放总线,主机发出STOP信号。
5、 简述采用TWI通信方式读取LM75A温度数据的步骤?
主机发送开始信号;接收应答;
主机发送从机地址命令;接收应答;
主机发送要读取数据的从机的寄存器地址和读从机命令;接收应答 主机逐个接收从机发送来的数据; …….
6、 按以下需求配置下列端口
a. 点亮LED3(对应引脚PA3,高电平触发)
____DDRA |= _BV(PA3);____;___PORTA |= _BV(PA3);____ b. 将PD所有端口配置成输入上拉
____DDRD = 0x00; ___; ___PORTD = 0xFF;________
c. Unsigned char I = 30,如果想要在LCD12864屏幕上显示I这个数字,程序该怎样写?
(输出字符的函数为:lcd12864_put_char(u8 x, u8 y, u8 data)) __lcd12864_put_char(0, 0, I/10 + 0x30);____ __lcd12864_put_char(1, 0, I + 0x30);____ 7、 如果当前引脚PA1是低电平,正常情况下过100us会变成高电平,如果过了200us,则
表示器件坏了,那么如何得知器件出问题了?(提示:使用超时检测法) u8 timeout = 0;
while( !(PINA & _BV(PA1)) ){ //低电平一直等待 if(timeout > 20) break; //或者写:return 0x01; _delay_us(10); timeout ++; }
8、 请写出PORTA的宏定义? 9、 简述关键字volatile的含义? 10、简述关键字extern的用法 四、程序题
1、用定时器溢出中断实现一个5s的倒计时,当时间到达0秒时,点亮8个led灯 说明:(1)定时器使用timer1,
(2)定时器初始化函数为timer1_init(); //该函数已默认初始化完成,溢出时间为1s (3)中断服务函数为ISR(TIMER1_OVF_vect) //该函数内的操作需手动完成,寄存器名字忘记的,可以用语言描述你要做的事情
用于定时的时间变量为:unsigned char time_count; 控制逻辑要在主函数中完成 #include // 1 #include // 1
Unsigned char time_count = 5; // 1 ISR(TIMER1_OVF_vect) { //重装定时器 //1 Time_count --; //1 }
Int main(void) {
Timer1_init(); //1
Sei();
DDRA = 0XFF; PORTA = 0XFF; If( 0 == time_count ) { PORTA = 0X00; Time_count = 5; }else{ PORTA = 0XFF; }
Return 0;
//1 //1 //1 //1
}