第一章(較易) 填空: 1. 單片機的基本組成結構包括: CPU 、 程序存儲器 、 數據寄存器 、 輸入,輸出接口 五大部分。 2. 哈佛結構是指,計算機由五大部分構成,五大部分分別是: 運算器 、 控制器 、 存儲器、 輸入設備 輸出設備 3. ATmega16包含 16KB 程序存儲器, 1KB 數據存儲器和 512字節 的EEPROM。 4. ATMEL公司生產的單片機以三大系列為主,分別是: tinyAVR 、 megaAVR 、 XMEGA 5. ATMEL公司生產的TinyAVR是屬于 低擋 單片機。、 6. ATMEL公司生產的megaAVR是屬于 中檔 單片機。 7. ATMEL公司生產的XMEGA是屬于 高檔 單片機。 選擇: 1. ATMEL公司生產的單片機以三大系列為主,其中TinyAVR是屬于( A ) A、低檔單片機 B、中檔單片機 C、高檔單片機 D、 普通單片機 2. ATMEL公司生產的單片機以三大系列為主,其中megaAVR是屬于( B ) A、低檔單片機 B、中檔單片機 C、高檔單片機 D、 普通單片機 3. ATMEL公司生產的單片機以三大系列為主,其中XMEGA是屬于( C ) A、低檔單片機 B、中檔單片機 C、高檔單片機 D、 普通單片機 4. 單片機的基本組成結構包括:CPU、程序存儲器、 、輸入接口、輸出接口五大部分( B ) A、EEPROM B、數據存儲器 C、ROM D、 堆棧 第二章() 填空: 1. 單片機的三總線結構是指: 數據總線 、 地址總線 、 控制總線 。 2. ATmega16包含 16KB FLASH ROM, 1KB RAM和 512字節 的EEPROM。 3. FLASH ROM支持用戶 多次擦除和寫入代碼 ,可以實現 大于1萬次 的 寫入 (填讀寫或寫入)。 4. 單片機的數據存儲器包含 RAM 和 EEPROM 兩大部分,其中 是 EEPROM是RAM 的補充。 5. ATmega16中含有 512字節 的EEPROM。它的擦寫次數是 大于10萬次 , 具有 掉電后不丟失數據 、 通過系統程序可以隨機修改 。 6. ATmega16的DIP封裝共有 40 引腳,其中共有 32個 I/O 口線。 7. ATmega16的數據存儲器中共有 32個8位 通用工作寄存器 ,有 6個 寄存器可以合并 成為3個 16位的寄存器。 8. 在ATmega16的通用寄存器組中,有 3個 16位的寄存器。名稱分別為: X寄存器 、 Y寄存器 、 Z寄存器 。 9. ATmega16的中斷向量表在FLASH ROM的 最前端 ,中斷的向量地址 越小 ,中斷的優先級越 高 。 10. ATmega16的工作電壓是 4.5~5.5V , 所能使用的最高晶振頻率為 16MHZ 。 11. ATmega16可以使用內部晶振,晶振頻率為 1M 、 2M 、 4M 、 8M 赫茲。 12. ATmega16共有 40 引腳,其中 第10引腳 為VCC, 第31引 腳為GND。 13. ATmega16的AVCC引腳是 30引腳 ,作用是 片內AD的電源輸入引腳 14. ATmega16的AREF引腳是 32引腳 ,作用是 片內AD的參考電壓 。 15. ATmega16的 第11,第31引腳是GND 13和12引腳是XTAL1.XTAL2,作用是片內反向放大器的輸入終端 16. ATmega16的復位引腳是 9引腳 ,名稱是 RESET 。 當在該引腳上出現一個 大于1.5us的低 電平,單片機復位。 17. AVR的指令長度為 16位 稱為一字, PC指針為 13位 ,FLASH存儲器是 8KB 字。 AVR 不能 擴展外部程序存儲器,這是因為 程序寄存器滿足片內8K字節的Flash程序存儲器空間直接尋址的需要 18. ATmega16配置系統時鐘的熔絲位共有 5個 位,名稱分別是 CKOPT 、 CKSEL{3:0} 選擇: 1. 單片機的三總線結構是指:數據總線、地址總線和_( A ) A、控制總線 B、采集總線 C、接收總線 D、 發送總線 2. 單片機的三總線結構是指:控制總線、地址總線和_( D ) A、發送總線 B、采集總線 C、接收總線 D、數據總線 3. ATmega16的DIP封裝共有 引腳,其中共有 I/O 口線( A ) A、40、32 B、40、8 C、32、4 D、40、4 4. ATmega16的數據存儲器中共有 32 個通用工作寄存器 ,有 個寄存器可以合并 成為_個 16位的寄存器。( C ) A、4、2 B、6、2 C、6、3 D、8、4 5. #pragma interrupt_handler ext_int0_isr :10 這句話中的10是什么中斷( A ) A、TC0溢出中斷 B、TC0比較匹配中斷 C、TC1溢出中斷 D、TC1比較匹配中斷 6. #pragma interrupt_handler ext_int0_isr :10 這句話中的10是( B ) A、中斷地址 B、中斷向量號 C、計數10次 D、中斷函數 7. ATmega16的AVCC引腳是 ,作用是片內AD的電源輸入引腳 ( C ) A、10 B、13 C、30 D、21 判斷: 1.ATmega16的中斷向量表在FLASH ROM的 最前端 ,中斷的向量地址越小,中斷的優先級越高。( 對) 2.ATmega16的中斷向量表在FLASH ROM的 最后端 ,中斷的向量地址越大,中斷的優先級越高。( 錯 ) 3.ATmega16的中斷向量表在FLASH ROM的 最前端 ,中斷的向量地址越大,中斷的優先級越低。( 對 ) 第六章 (中等) 填空: 1. AVR單片機每組I/O都配置了 3個 8位的寄存器,分別是 DDRx PORTx.PINx 2. AVR單片機的DDRX寄存器的作用是 控制I/O口的輸入輸出方式PORTX寄存器的作用是 當I/O輸入時,是否使用上拉電阻,內部輸出時,內部輸出時,設置I/O口輸出電平 3. DDRX的值設為 1 時,I/O口輸出,設為 0 時,I/O口輸入。 4. 共陽數碼管的公共級接 VCC 且每段的電壓為 5 時,數碼管點亮。 5. 共陰數碼管的公共級接 GND 且每段的電壓為 0 時,數碼管點亮。 6. 單片機初始化時,I/O口的狀態是 輸入狀態,不使用內部的上拉電阻 。 選擇 1.數碼管靜態顯示的特點是顯示穩定,顯示亮度高,_______________( C ) A、硬件復雜 B、程序復雜 C、程序簡單 D、硬件簡單 判斷: 1. 數碼管靜態顯示的優點是顯示穩定,顯示亮度高,程序簡單。( 對 ) 2. 數碼管動態顯示的優點是顯示穩定,顯示亮度高,程序簡單。( 錯 ) 3. 數碼管動態顯示的優點是占用的硬件資源小,耗電量小。( 對 ) 4. 數碼管動態顯示的缺點是穩定性差,程序設計復雜,MCU負擔重。( 對 ) 5. 數碼管靜態顯示的缺點是占用硬件資源多,耗電量大。( 對 ) 6. 數碼管靜態顯示的缺點是穩定性差,程序設計復雜,MCU負擔重。( 錯 ) 7. 數碼管動態顯示的缺點是占用硬件資源多,耗電量大。( 錯 )。 /***************************題目1**************************************/ 程序分析:(重要!建議一格2分) #include <iom16v.h> 語句功能:添加#include <iom16v.h>使程序可以使用特殊功能寄存器 #include <delay.h> Void main() { Unsigned char position=0; PORTA=0xff; DDRA=0xff; 語句功能:將PA口工作設置為輸出方式 While(1) { PORTA= ~(a<<position); 語句功能:將a左移position位 If (++position>=8) position=0; Delay_ms(1000); 語句功能:延時1S } } 1. 程序中position變量的作用是?(1 分) 答:選擇哪一位的發光二極管點亮 2. 說明程序功能。(1分) 答:循環點亮實現流水燈 /***************************題目2**************************************/ #include <mega16.h> #include <delay.h> flash char led_7[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; bit point_on = 0; void main(void) { char i = 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的條件是: 響應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**************************************/ #include <iom16v.h> char led_7[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; char counter; #pragma interrupt_handler ext_int0_isr :2 語句中2是:外部中斷O的中斷向量號 void ext_int0_isr(void) { if (++counter>=16) counter = 0; } void main(void) { PORTA=0xFF; DDRA=0xFF; GICR|=0xC0; //允許INT0 INT1 中斷 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. ATmega16共有三個定時器,分別是 T/C1 、 T/C1 、 T/C2 。 4. 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 /256N B、f=fclk /510N C、f=fclk /2N(OCR0+1) D、f=fclk /2N(滿-初+1) 2.定時器0相位PWM模式的頻率是( B ) A、f=fclk /256N B、f=fclk /510N C、f=fclk /2N(OCR0+1) D、f=fclk /2N(滿-初+1) 3.定時器0普通模式的頻率是( D ) A、f=fclk /256N B、f=fclk /510N C、f=fclk /2N(OCR0+1) D、f=fclk /2N(滿-初+1) 4.定時器0的CTC模式的頻率是( C ) A、f=fclk /256N B、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**************************************/ #include <mega16.h> char auc_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點正弦波樣本值 char x_SW = 8,X_LUT = 0; // T/C0 溢出中斷服務 #pragma interrupt_handler timer0_ovf_isr:10 void timer0_ovf_isr(void) { X_LUT += x_SW; // 語句功能:新樣點指針 if (X_LUT > 127) X_LUT -= 128; // 語句功能:樣點指針調整 OCR0 = auc_SinParam[X_LUT]; // 語句功能:采樣點指針到比較匹配寄存器 } void main(void) { DDRB=0x08; // 語句功能:PB3輸出方式,作為OCO輸出PWM波 TCCR0=0x69; OCR0=128; TIMSK=0x01; // 語句功能:使能T/C0溢出中斷 SREG|=0x80; // 語句功能:使能全局中斷 while (1) {}; } 程序功能:用TC0的快速PWM模式產生頻率為1KHZ 的正弦波 /***************************題目1**************************************/ 補充題: 1. ATmega16包含 程序存儲器, 數據存儲器( D )。 A.16kb 512字節 B. 1KB 16KB C. 512字節 1KB D.16KB 1KB 1. ATmega16包含 數據存儲器和 的EEPROM。( A ) A.1kb 512字節 B. 1KB 16KB C. 512字節 1KB D.16KB 1KB 1. 單片機的數據存儲器包含 和 兩大部分。( C ) A.ROM RAM B.EEPROM CPU C. RAM EEPROM D.ROM CPU 1.T/C0工作在普通模式時,初值 ,滿值 。( B ) A.為0 為255 B. 由TCNT0設定 為255 C. 由OCR0設置 255 D.0 由OCR0設置 2. T/C0工作在CTC模式時,初值 ,滿值 。( D ) A.為0 為255 B. 由TCNT0設定 為255 C. 由OCR0設置 255 D.0 由OCR0設置 3.T/C0工作在快速PWM模式時,初值 ,滿值 ( A ) A.為0 為255 B. 由TCNT0設定 為255 C. 由OCR0設置 255 D.0 由OCR0設置 4.T/C0工作在相位修正PWM模式時,初值 ,滿值 。( A ) A.為0 為255 B. 由TCNT0設定 為255 C. 由OCR0設置 255 D.0 由OCR0設置 5. 定時器0的計數寄存器是 ( A ) A.TCNT0 B. OCR0 C. TCCR0 D.TIMSK 6. 定時器0的比較匹配寄存器是 ( B ) A.TCNT0 B. OCR0 C. TCCR0 D.TIMSK 7.定時器做外部時鐘來源時,N的取值有 ( A ) A.1 B. 2 C. 4 D.以上皆是 8. AVR的8位定時器/計數器有 種工作方式( C ) A.1 B. 2 C. 4 D.8 9共陽數碼管的公共級接 且每段的電壓為 時,數碼管點亮( D ) A.GND VCC B. GND CPU C. VCC CPU D.VCC GND 1. 數碼管靜態顯示的缺點是_______________( D ) A、硬件復雜 B、程序復雜 C、程序簡單 D、占用資源多 2. 數碼管靜態顯示的優點是_______________( C ) A、硬件復雜 B、程序復雜 C、程序簡單 D、占用資源多 3.DDRX的值設為 時,I/O口輸出。( B ) A、0 B、1 C、2 D、3 4.DDRX的值設為 時,I/O口輸入。( A ) A、0 B、1 C、2 D、3 5. 數碼管動態顯示的缺點是_______________( D ) A、硬件復雜 B、程序復雜 C、硬件簡單 D、占用資源多 5. 數碼管動態顯示的優點是_______________( D ) A、硬件復雜 B、程序復雜 C、硬件簡單 D、占用資源少