将a左移position位
If(++position>=8)position=0;
Delay_ms(1000);语句功能:
延时1S
}
}
1.程序中position变量的作用是?
(1分)答:
选择哪一位的发光二极管点亮
2.说明程序功能。
(1分)答:
循环点亮实现流水灯
/***************************题目2**************************************/
#include
#include
flashcharled_7[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
bitpoint_on=0;
voidmain(void)
{
chari=0;
PORTA=0xFF;
DDRA=0xFF;语句功能:
PA口工作为输出方式
while
(1)
{
for(i=0;i<=15;i++)
{
PORTA=led_7[i];语句功能:
发送数码管段选
if(point_on)PORTA|=0x80;
delay_ms(1000);
}
point_on=~point_on;语句功能:
小数点闪烁
};
}/
说明程序功能:
数码管静态显示0~F,每个字符显示1S。
小数点间隔点亮
/***************************题目2**************************************
第七章(重点!
!
比重大!
!
)
填空:
1.ATmega16中共含有21个中断源,其中有一个中断源是不可屏蔽中断,名称为向量号为1.
2.单片机相应中断A的条件是:
全局中断允许标示AND中断A允许标示AND中断A标示
3.ATmega16中共含有3个外部中断,名称为INTO、INT1、INT2。
4.MCUCR寄存器是MCU控制寄存器,用于设置INTO和INT1的中断触发方式。
5.GICR寄存器是用中断控制寄存器,用于设置外部中断的中断允许位
6.GIFR寄存器是通用中断标示寄存器,用于设置外部中断的中断允许位。
当有满足中断条件的事件出现时,对应的中断标志位为1。
7.中断标志位的清除方法是对其写1
8.全局中断使能位是SREG寄存器中的第7位即I位。
判断:
1.清除中断标志位的方法是对其写0.(错)
2.清除中断标志位的方法是对其写1.(对)
3.外部中断的中断标志位会由硬件自动清0.(对)
4.外部中断的中断标志位不会由硬件自动清0.(错)
5.全局中断使能位是SREG寄存器中的第7位即I位。
(对)
6.全局中断使能位是SREG寄存器中的第8位。
(错)
7.全局中断使能位是SREG寄存器中的第7位即F位。
(错)
程序分析:
1.ATmega16单片机的中断系统采用两级控制,它是如何控制的?
2.ATmega16单片机有几个外部中断,有几种触发方式?
/***************************题目1**************************************/
#include
charled_7[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
charcounter;
#pragmainterrupt_handlerext_int0_isr:
2语句中2是:
外部中断O的中断向量号
voidext_int0_isr(void)
{
if(++counter>=16)counter=0;
}
voidmain(void)
{
PORTA=0xFF;
DDRA=0xFF;
GICR|=0xC0;//语句功能允许INT0INT1中断
MCUCR=0x0A;//语句功能INT0,INT1下降沿触发
GIFR=0xC0;//语句功能清除INT0,INT1中断标示位
counter=0;//
#asm("sei")//语句功能使能全局中断
while
(1)
{
PORTA=led_7[counter];//语句功能显示计数单元};
}
说明程序功能:
一个8段数码管显示0~F16个十六进制的数字,当系统上电时,显示0,当按1次按键,显示数字加1,依次类推,当第15次按键式时,显示“F”,第16次按键时,显示又从0开始,当按键按下,显示数值加1
/***************************题目1**************************************/
第八章(重点!
!
分值重!
)
填空:
1.ATmega16共有三个定时器,分别是T/C0、T/C1、T/C2。
其中
16位的定时器是T/C1,8位的定时器是T/C0,T/C2。
2.ATmega16共有2个8位的定时器计数器,名称是T/C0,T/C2,1个16位的定时器名称是T/C1。
3.TCNT0是定时器0的计数寄存器,作用是对定时器0的脉冲计数。
5.OCR0是定时器0的输出比较寄存器,作用是存放定时器0的比较匹配值。
6.T/C0的计数时钟源可以来自内部时钟和外部时钟两种。
7.T/C0的计数时钟源的选择由TCCRO中的CS02,CS01,CS00三个位确定。
8.T/C0工作在普通模式时,初值由TCNTO设置,满值255。
9.T/C0工作在CTC模式时,初值为0,满值为OCRO设置。
10.T/C0工作在快速PWM模式时,初值为0,满值OXFF在正向比较匹配输出模式下,当TCNT0与OCRO比较匹配时,清零OC0;当TCNTO从OXFF到OXOO时,置为OC0。
11.T/C0工作在相位修正PWM模式时,初值为0,满值OXFF在正向比较匹配输出模式下,当TCNT0的计数值与OCRO的值比较匹配时,清零OC0;当TCNTO的值与OCRO相同时,置为OC0。
选择:
1.定时器0快速PWM模式的频率是(A)
A、f=fclk/256NB、f=fclk/510N
C、f=fclk/2N(OCR0+1)D、f=fclk/2N(满-初+1)
2.定时器0相位PWM模式的频率是(B)
A、f=fclk/256NB、f=fclk/510N
C、f=fclk/2N(OCR0+1)D、f=fclk/2N(满-初+1)
3.定时器0普通模式的频率是(D)
A、f=fclk/256NB、f=fclk/510N
C、f=fclk/2N(OCR0+1)D、f=fclk/2N(满-初+1)
4.定时器0的CTC模式的频率是(C)
A、f=fclk/256NB、f=fclk/510N
C、f=fclk/2N(OCR0+1)D、f=fclk/2N(满-初+1)
判断:
1.定时器0的计数寄存器是TCNT0,比较匹配寄存器是OCR0。
(对)
2.定时器1的计数寄存器是TCNT1,比较匹配寄存器是OCR1。
(错)
3.定时器0的计数寄存器是TCNT0,比较匹配寄存器是OCR1。
(错)
4.定时器1的计数寄存器是TCNT1A,TCNT1B。
(对)
5.当TCNT0的值和OCR0的值匹配时,提出比较匹配中断。
(对)
6.当TCNT0的值和OCR0的值匹配时,提出溢出中断。
(错)
7.PWM方波的参数有频率、占空比和相位,其中相位和占空比是主要参数。
(错)
8.PWM方波的参数有频率、占空比和相位,其中频率和占空比是主要参数。
(对)
9.PWM方波的参数有频率、占空比和相位,其中相位和频率是主要参数。
(错)
10.定时器可以有两个时钟来源,一个是外部时钟,一个是内部时钟。
(对)
11.定时器做内部时钟来源时,N的取值只有1。
(错)
12.定时器做外部时钟来源时,N的取值只有1。
(对)
13.定时器做内部时钟来源时,N的取值有1,2,4,8。
(对)
14.定时器做外部时钟来源时,N的取值有1,2,4,8。
(错)
程序分析:
1.AVR八位定时器/计时器有几种工作方式,分别是什么?
2.简述快速PWM的工作过程?
3.简述相位修正PWM的工作过程?
4.简述CTC模式定时器的工作过程?
5.若采用定时器0的快速PWM模式,使用内部时钟,不经过分频,将OCR0的值设置为155,则输出的PWM的占空比是多少?
写出详细计算过程.
6.简述普通模式下定时器的工作过程?
/***************************题目1**************************************/
#include
charauc_SinParam[128]={
128,134,140,147,153,159,165,171,177,182,188,193,199,204,209,213,218,222,226,230,234,237,240,243,245,248,250,251,253,254,254,255,255,255,254,254,253,251,250,248,245,243,240,237,234,230,226,222,218,213,209,204,199,193,188,182,177,171,165,159,153,147,140,134,128,122,116,109,103,97,91,85,79,74,68,63,57,52,47,43,38,34,30,26,22,19,16,13,11,8,6,5,3,2,2,1,1,1,2,2,3,5,6,8,11,13,16,19,22,26,30,34,38,43,47,52,57,63,68,74,79,85,91,97,103,109,116,122};//数组中的内容为128点正弦波样本值
charx_SW=8,X_LUT=0;
//T/C0溢出中断服务
#pragmainterrupt_handlertimer0_ovf_isr:
10
voidtimer0_ovf_isr(void)
{
X_LUT+=x_SW;//语句功能:
新样点指针
if(X_LUT>127)X_LUT-=128;//语句功能:
样点指针调整
OCR0=auc_SinParam[X_LUT];//语句功能:
采样点指针到比较匹配寄存器
}
voidmain(void)
{
DDRB=0x08;//语句功能:
PB3输出方式,作为OCO输出PWM波
TCCR0=0x69;
OCR0=128;
TIMSK=0x01;//语句功能:
使能T/C0溢出中断
SREG|=0x80;//语句功能:
使能全局中断
while
(1)
{};
}
程序功能:
用TC0的快速PWM模式产生频率为1KHZ的正弦波
补充题:
1.ATmega16包含程序存储器,数据存储器(D)。
A.16kb512字节B.1KB16KB
C.512字节1KBD.16KB1KB
2.ATmega16包含数据存储器和的EEPROM。
(A)
A.1kb512字节B.1KB16KB
C.512字节1KBD.16KB1KB
3.单片机的数据存储器包含和两大部分。
(C)
A.ROMRAMB.EEPROMCPU
C.RAMEEPROMD.ROMCPU
4.T/C0工作在普通模式时,初值,满值。
(B)
A.为0为255B.由TCNT0设定为255
C.由OCR0设置255D.0由OCR0设置
5.T/C0工作在CTC模式时,初值,满值。
(D)
A.为0为255B.由TCNT0设定为255
C.由OCR0设置255D.0由OCR0设置
6.T/C0工作在快速PWM模式时,初值,满值(A)
A.为0为255B.由TCNT0设定为255
C.由OCR0设置255D.0由OCR0设置
7.T/C0工作在相位修正PWM模式时,初值,满值。
(A)
A.为0为255B.由TCNT0设定为255
C.由OCR0设置255D.0由OCR0设置
8.定时器0的计数寄存器是(A)
A.TCNT0B.OCR0
C.TCCR0D.TIMSK
9.定时器0的比较匹配寄存器是(B)
A.TCNT0B.OCR0
C.TCCR0D.TIMSK
10.定时器做外部时钟来源时,N的取值有(A)
A.1B.2
C.4D.以上皆是
11.AVR的8位定时器/计数器有种工作方式(C)
A.1B.2
C.4D.8
12共阳数码管的公共级接且每段的电压为时,数码管点亮(D)
A.GNDVCCB.GNDCPU
C.VCCCPUD.VCCGND
13.数码管静态显示的缺点是_______________(D)
A、硬件复杂B、程序复杂
C、程序简单D、占用资源多
14.数码管静态显示的优点是_______________(C)
A、硬件复杂B、程序复杂
C、程序简单D、占用资源多
15.DDRX的值设为时,I/O口输出。
(B)
A、0B、1
C、2D、3
16.DDRX的值设为时,I/O口输入。
(A)
A、0B、1
C、2D、3
17.数码管动态显示的缺点是_______________(D)
A、硬件复杂B、程序复杂
C、硬