單片機(jī)模擬試題以及測驗(yàn)答案_第1頁
單片機(jī)模擬試題以及測驗(yàn)答案_第2頁
單片機(jī)模擬試題以及測驗(yàn)答案_第3頁
單片機(jī)模擬試題以及測驗(yàn)答案_第4頁
單片機(jī)模擬試題以及測驗(yàn)答案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第二章 單片機(jī)硬件結(jié)構(gòu)測試1、AT89S51單片機(jī)都集成了哪些功能部件?答:AT89S51單片機(jī)的片內(nèi)都集成了如下功能部件:(1)1個(gè)8位微處理器(CPU);(2)數(shù)據(jù)存儲器(128B RAM)單元 ;(3)4KB Flash程序存儲器(ROM);(4)4個(gè)8位可編程并行I/O口(P0口、P1口、P2口、P3口);(5)1個(gè)全雙工串行口;(6)2個(gè)16位定時(shí)器/計(jì)數(shù)器;(7)1個(gè)看門狗定時(shí)器;(8)一個(gè)中斷系統(tǒng),5個(gè)中斷源,5個(gè)中斷向量、2個(gè)優(yōu)先級;(9)26個(gè)特殊功能寄存器(SFR)2、AT89S51單片機(jī)存儲器的結(jié)構(gòu)特點(diǎn)?答:80C51單片機(jī)采用將數(shù)據(jù)存儲器和程序存儲器分開,分別尋址的結(jié)構(gòu)

2、,稱為Harvard結(jié)構(gòu)。 在物理上有四個(gè)存儲器空間:片內(nèi)程序存儲器,片外程序存儲器,片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。 在邏輯上有三個(gè)存儲器空間:片內(nèi)外統(tǒng)一的64KB程序空間,128B片內(nèi)數(shù)據(jù)空間,64KB片外數(shù)據(jù)空間。 訪問格式:訪問片內(nèi)RAM采用MOV格式,訪問片外RAM采用MOVX格式。單片機(jī)內(nèi)部程序存儲器是(4KB 的Flash存儲器),地址范圍是(0000H)(0FFFH);數(shù)據(jù)存儲器是(128B的RAM),地址范圍是(00H)(7FH) 。3、程序存儲器可外擴(kuò)至(64K)B,地址范圍是(0000H)(FFFFH),通過引腳(EA非),區(qū)分訪問的片內(nèi),片外存儲器。如何區(qū)分?如何區(qū)分:

3、當(dāng)EA腳為高電平時(shí),單片機(jī)讀片內(nèi)程序存儲器(4K 字節(jié)Flash)中的內(nèi)容,但在PC值超過0FFFH(即超出4K字節(jié)地址范圍)時(shí),將自動(dòng)轉(zhuǎn)向讀外部程序存儲器內(nèi)(1000H-FFFFH)的程序;當(dāng)EA腳為低電平時(shí),單片機(jī)只對外部程序存儲器的地址為0000HFFFFH中的內(nèi)容進(jìn)行讀操作,單片機(jī)不理會(huì)片內(nèi)的4K 字節(jié)的Flash程序存儲器4、程序存儲器中5個(gè)中斷入口地址分別是多少?中斷源 中斷入口地址外部中斷0 0003H定時(shí)器/計(jì)數(shù)器T0 000BH外部中斷1 0013H定時(shí)器/計(jì)數(shù)器T1 001BH串行口中斷 0023H5、數(shù)據(jù)存儲器可外擴(kuò)至(64K)B,地址范圍是(0000H)(FFFFH),

4、訪問片外數(shù)據(jù)存儲器時(shí),地址使用(DPTR)和(Ri)表示。6、AT89S51的4個(gè)并行I/O口,分別是(P0)、(P1)、(P2)、(P3)。從電路特點(diǎn),驅(qū)動(dòng)能力,作用簡單描述他們的特點(diǎn)。作用:P0口每位可驅(qū)動(dòng)8個(gè)LSTTL輸入,而P1、P2、P3口的每一位的驅(qū)動(dòng)能力,只有P0口的一半,任何一個(gè)口想要獲得較大的驅(qū)動(dòng)能力,只能采用低電平輸出。7、單片機(jī)最小系統(tǒng)包括哪些基本電路?分別可以使用什么方法實(shí)現(xiàn)?時(shí)鐘電路:一種是內(nèi)部時(shí)鐘方式,通過晶振頻率的高低控制另一種是外部時(shí)鐘方式,用現(xiàn)成的外部振蕩器產(chǎn)生脈沖信號復(fù)位電路:復(fù)位電路采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式8、時(shí)鐘周期,機(jī)器周期和指令周期的關(guān)系答

5、:一個(gè)機(jī)器周期包括12個(gè)時(shí)鐘周期。指令周期是執(zhí)行一條指令所需的時(shí)間。單字節(jié)指令需要一個(gè)機(jī)器周期,雙字節(jié)位2個(gè)機(jī)器周期,復(fù)雜指令則需要多個(gè)機(jī)器周期。第三章測試1、把片外RAM 6000H單元數(shù)據(jù)送到片內(nèi) RAM 50H單元中MOV DPTR,#6000HMOVX A,DPTRMOV 50H,A2、若有一表:ORG 3000HDB 00H,01H,04H,09H,10H,19H,24H,31H,40H,51H請通過查找表指令將表中的第7個(gè)元素的值送值累加器R1ORG 0000HMAIN:MOV DPTR,#DBMOV A,#6MOVC A,A+DPTRMOV R4,ARETDB 00H,01H,0

6、4H,09H,10H,19H,24H,31H,40H,51H3、請使用兩種方法將累加器A和寄存器R3中的內(nèi)容互換(1) XCH A,R3(2) MOV R0,AMOV A,R3MOV R3,R0 (3) PUSH AccPUSH R3POP AccPOP R34、請使用指令完成以下要求,未涉及位的內(nèi)容不能改變:(1)將ACC.2, ACC.6, ACC.7清0 ANL A,#10011101(2)將ACC.4, ACC.5置1ORL A,#18H第5章-中斷測試1、AT89S51中斷源有幾個(gè)?入口地址分別是多少?中斷源 中斷入口地址外部中斷0 0003H定時(shí)器/計(jì)數(shù)器T0 000BH外部中斷1

7、 0013H定時(shí)器/計(jì)數(shù)器T1 001BH2、與AT89S51中斷相關(guān)的寄存器有哪些?分別是什么作用?定時(shí)器控制寄存器-TCON用于選擇外部中斷0或1,并且選擇外部中斷的請求觸發(fā)方式(跳沿觸發(fā)或者電平觸發(fā))中斷允許寄存器-IE 用于開中斷或關(guān)中斷中斷優(yōu)先寄存器-IP 可控制和改變中斷源的優(yōu)先級串行通信控制寄存器SCON 低2位所存串行口的發(fā)送中斷和接收中斷請求標(biāo)志TI和RI3、各個(gè)中斷的觸發(fā)方式是什么?對應(yīng)的撤銷方式是什么?IT1=0,電平觸發(fā)方式,引腳上低電平有效,并把IE1置“1”。轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件自動(dòng)把IE1清“0”。IT1=1,跳沿觸發(fā)方式,加到引腳上的外部中斷請求輸入信號電

8、平從高到低的負(fù)跳變有效,并把IE1置“1”。轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件自動(dòng)把IE1清“0”1定時(shí)器/計(jì)數(shù)器中斷請求的撤銷硬件會(huì)自動(dòng)把中斷請求標(biāo)志位(TF0或TF1)清0,自動(dòng)撤銷。2外部中斷請求的撤銷(1)跳沿方式外部中斷請求的撤銷包括兩項(xiàng):中斷標(biāo)志位清0和外中斷信號的撤銷。中斷標(biāo)志位清0是在中斷響應(yīng)后由硬件自動(dòng)完成的。外中斷請求信號的撤銷,由于跳沿信號過后也就消失了,自動(dòng)撤銷。(2)電平方式外部中斷請求的撤銷電平方式外中斷請求的撤銷,其中中斷請求標(biāo)志自動(dòng)撤銷,但中斷請求信號的低電平可能繼續(xù)存在,為此,除了標(biāo)志位清“0”之外,還需在中斷響應(yīng)后把中斷請求信號輸入引腳從低電平強(qiáng)制改變?yōu)楦唠娖剑?)

9、串行口中斷請求的撤銷響應(yīng)串行口的中斷后,CPU無法知道是接收中斷還是發(fā)送中斷,還需測試這兩個(gè)中斷標(biāo)志位,以判定是接收操作還是發(fā)送操作,然后才清除。所以串行口中斷請求的撤銷只能使用軟件的方法,在中斷服務(wù)程序中進(jìn)行,即用如下指令在中斷服務(wù)程序中對串行口中斷標(biāo)志位進(jìn)行清除:CLR TI ;清TI標(biāo)志位CLR RI ;清RI標(biāo)志位4、設(shè)計(jì)中斷程序時(shí)由主程序和中斷服務(wù)子程序兩部分構(gòu)成,主程序的作用?中斷服務(wù)子程序作用?請寫出含有外部中斷0和外部中斷1主程序結(jié)構(gòu)和中斷服務(wù)子程序的結(jié)構(gòu)。主程序:設(shè)置中斷源的入口地址、進(jìn)行中斷的初始化子程序:完成中斷需要執(zhí)行的內(nèi)容INT:CLR EA執(zhí)行內(nèi)容SETB EARE

10、TI5、請寫出由外部中斷1控制的單個(gè)發(fā)光二極管閃爍5次(連在P1.5上)的程序# include <reg51.h> sbit d1=P15;void delay(x) uchar t;while(x-) for(t=0;t<120;t+); void int1() interrupt 2 EA=0; for(i=0;i<=10;i+) d1=d1; delay(100); EA=1; main() d1=1; IT1=1; EX1=1; EA=1; while(1); 第六章測試1、定時(shí)器的啟動(dòng)方式有幾種?分別由哪個(gè)引腳決定?兩種:1.只受定時(shí)器控制寄存器TCON中的

11、運(yùn)行控制位TRx的控制(即由單片機(jī)內(nèi)部決定) 2.由內(nèi)部和引腳INT0(P3.4)、INT1(P3.5)決定是執(zhí)行1還是2取決于GATE(門空位),當(dāng)GATE=0執(zhí)行1,GATE=1執(zhí)行22、定時(shí)器的4種工作方式分別有什么特點(diǎn)?若系統(tǒng)時(shí)鐘為12MHz,請問,4種工作方式最長定時(shí)分別是多少?(寫出計(jì)算表達(dá)式)方式0:為13位定時(shí)器/計(jì)數(shù)器方式1:為16位定時(shí)器/計(jì)數(shù)器方式2:8位的常數(shù)自動(dòng)重新裝載的定時(shí)器/計(jì)數(shù)器方式3:僅適用于T0,此時(shí)T0分成兩個(gè)8位計(jì)數(shù)器,T1停止計(jì)數(shù)4種方式最長定時(shí)位:初值=213-(t*12*106)/12最長時(shí)間位(2n-0)*10(-6)3、當(dāng)T0(P3.4)引腳發(fā)

12、生負(fù)跳變時(shí),作為P1.0引腳產(chǎn)生方波的啟動(dòng)信號。開始從P1.0腳上輸出一個(gè)周期為1ms的方波。#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar t=0;sbit p1=P10;void main() TMOD=0x26;TH0=0xFF;TL0=0xFF;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1; TR0=1;ET0=1; P1=0;F0=0;while(1) if(F0=1)

13、TR1=1; ET1=1;void timer1() interrupt 3p1=p1;void timer() interrupt 1TR0=0;F0=1;4、時(shí)鐘頻率是12MHz,寫出采用方式1,在P1.5引腳輸出周期為2s的方波程序。#include<reg51.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuchar Timer=0;sbit p1=P15;uchar code table=0xC0,0xF9,0xA4,0XB0,0X99,0X92,0X82,0X

14、F8,0X80,0X90;void main() uchar i=9;TMOD=0x10;TH1=(65536-10000)/256;TL1=(65536-10000)%256;EA=1; ET1=1; TR1=1; p1=1;while(1)if(Timer=100)Timer=0;P2=P2;p1=p1;void timer1() interrupt 3TH1=(65536-10000)/256;TL1=(65536-10000)%256;Timer;第七章測試1、單片機(jī)AT89S51串行口傳數(shù)據(jù)的幀格式是一個(gè)起始位(0),8個(gè)數(shù)據(jù)位,1位停止位組成,請畫出發(fā)送字符B的幀格式。當(dāng)串行口每分

15、鐘發(fā)送1800個(gè)字符時(shí),波特率是多少?起始位D0D1D2D3D4D5D6D7停止位1800*60=108000bit/s2、若晶體振蕩器為11.0952Hz,串口工作在方式1,波特率為4800bit/s,寫出用T1作為波特率發(fā)生器的方式控制字和計(jì)數(shù)初值。選用T1的工作方式2,SMOD=0.X=256-(fosc*(SMOD+1)/(384*波特率)=3、使用串行口發(fā)送中斷服務(wù)子程序完成以下功能:(1)發(fā)送字符x;(2)點(diǎn)亮發(fā)光二極管#include<reg51.h>Sbit LED=P16;Void INT() interrupt 4if(TI) TI=0; SBUF=X; LED

16、=0;4、使用串行口接收中斷服務(wù)子程序完成以下功能:(1)接收字符;(2)發(fā)光二極管(P1.6)閃爍一次Void INT () interrupt 4 If(RI) RI=0; P0=SUBF;LED=1;DELAY();LED=0;DELAY();LED=1;第十一章測試1、D/A芯片的衡量指標(biāo)?n位的轉(zhuǎn)換芯片,其分辨率是多少?指標(biāo):分辨率、建立時(shí)間、轉(zhuǎn)換精度。分辨率: 輸出電壓滿刻度/2n2、DAC0832的Vref=5V,輸入數(shù)字量為0x80時(shí),輸出Vn是多少?V0=|-B*(Vref/256) |=2.5V B=0x803、A/D轉(zhuǎn)換芯片的衡量指標(biāo)是什么?ADC0809是幾位的轉(zhuǎn)換芯片

17、,其分辨率是多少?(1)轉(zhuǎn)換時(shí)間和轉(zhuǎn)換速率(2)分辨率: 輸出電壓滿刻度/28 ADC0809是8位轉(zhuǎn)換芯片(3)轉(zhuǎn)換精度4、DAC0832的連接方式有幾種?請寫出單緩沖方式下的三角波、階梯波、方波程序,設(shè)地址為0xFFFE。有三種:單緩沖、雙緩沖、直通方式。三角波:#include<reg51.h>#include <absacc.h>#define DAC0832 XBYTE0XFFFE#define uchar unsigned char#define uint unsigned intvoid delay_ms(uint s) uchar t; while(s-

18、) for (t=0;t<120;t+);void main() uchar flag=0; uchar i; while(1) if(flag=0)i+;DAC0832=i;delay_ms(1);if(i=0xff) flag=1; else i-; DAC0832=i; delay_ms(1); if(i=0)flag=0; 方波:#include<reg51.h>#include <absacc.h>#define DAC0832 XBYTE0XFFFE#define uchar unsigned char#define uint unsigned int

19、void delay_ms(uint s) uchar t; while(s-) for (t=0;t<120;t+);void main() while(1) DAC0832=0xff; delay_ms(100); DAC0832=2; delay_ms(110); 階梯波:Void main() Uchar f=0;i=0; While(1) DAC0832=f; delayms(); i+; if(i<10)f=f+10;else f=0;i=0;5、若DAC0809芯片對其IN3通道數(shù)據(jù)轉(zhuǎn)換后送至內(nèi)部RAM的30H單元。IN3通道地址為0X7FFB.(1)采用查詢的方式,

20、EOC與單片機(jī)P1.5連接(2)采用中斷的方式。雙向來回的流水燈:1、在keil中編寫程序?qū)崿F(xiàn)以下功能,將P2口接8只LED,實(shí)現(xiàn)來回流水燈效果。#include <reg51.h>#include <intrins.h>void delay(int a);void main() int i; P2=0x01; while(1) / 向左循環(huán)點(diǎn)亮LED for(i=0; i<7; i+) P2=_crol_(P2,1); / 左移一位,點(diǎn)亮下一位LED delay(100); / 向右循環(huán)點(diǎn)亮LED for(i=0; i<7; i+) P2=_cror_(P

21、2,1); / 右移一位,點(diǎn)亮上一位LED delay(100); / 延時(shí)函數(shù),延時(shí)a毫秒void delay(int a) int x,y; for(x=a;x>0;x-) for(y=110;y>0;y-); 題2:ORG 1000HTAB1 EQU 1234HTAB2 EQU 3000HDB “MAIN”DW TAB1,TAB2,70H請畫出從1000H開始的存儲單元的內(nèi)容? (3)將內(nèi)部RAM中的45H單元的高4位清0,低4為置1。 實(shí)驗(yàn):通過開關(guān)控制8個(gè)發(fā)光二極管的點(diǎn)亮,熄滅。(預(yù)習(xí)題)2、按下開關(guān)K1, 8個(gè)發(fā)光二極管點(diǎn)亮與熄滅循環(huán)交替3、按下開關(guān)K2,前4個(gè)發(fā)光二極

22、管與后4個(gè)發(fā)光二極管交替點(diǎn)亮K1、K2分別由外部中斷T0、T1引入。#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar flag=3;void delay(uchar n) uchar i,j; i=n; while(i-) for(j=0;j<120;j+);void main() uchar a; EA=1; IT0=1; EX0=1; EX1=1; IT1=1; P2=0x01; while(1) if(flag=0) de

23、lay(1000); P2=_crol_(P2,1); / ÓÒÒÆһ룬£¬µãÁÁÉÏһλLED delay(1000); if(flag=1) P2=0XF0; delay(1000); P2=0x0f; delay(1000); void int0() interrupt 0 flag=0; void int1() interrupt 2 flag=1;實(shí)驗(yàn)內(nèi)

24、容:按鍵控制流水燈(8只LED)1、初始狀態(tài):D1D8輪流點(diǎn)亮2、當(dāng)按下按鍵SKEY1時(shí)(使用INT0),停止輪換,LED0LED4與LED5LED7交換點(diǎn)亮一次;3、當(dāng)按下按鍵SKEY2時(shí)(使用INT1),8只燈全亮全滅一次,再輪流點(diǎn)亮D1D8。#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intvoid delay(uchar n) uchar j,i; j=n; while(j-) for(i=0;i<120;i+);void main

25、() EA=1; EX0=1; IT0=1; EX1=1; IT1=1; P2=0x01; delay(1000); while(1) P2=_crol_(P2,1); delay(1000); void int0() interrupt 0 delay(1000); P2=0x0f; delay(1000); P2=0xf0; delay(1000); P2=0X01; delay(1000);void int1() interrupt 2 P2=0XFF; delay(1000); P2=0X00; delay(1000); P2=0X01; delay(1000);實(shí)驗(yàn)內(nèi)容:按鍵聲光報(bào)警

26、實(shí)驗(yàn)利用外部硬件中斷(使用INT0),按鍵skey1,按下一次產(chǎn)生一次外部中斷,使得發(fā)光二極管和蜂鳴器的鳴響次數(shù)和計(jì)數(shù)器的數(shù)值一致。計(jì)數(shù)范圍是110。#include<reg51.h>#include<math.h>#define uchar unsigned char#define uint usigned intsbit speak=P11;sbit display=P2;uchar a=0;uchar code table=0xC0,0xF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;void delay(uchar n) u

27、char i,j; i=n; while(i-) for(j=0;j<120;j+);void main() EA=1; EX0=1; IT0=1; speak=1; P2=table0; P0=0; while(1);void int_0() interrupt 0 uchar i; a+; if(a=9) a=1; P0=0; P2=tablea; P0=P0+pow(2,a-1); for(i=0;i<a;i+) speak=speak; delay(1000); 實(shí)驗(yàn):通過開關(guān)控制數(shù)碼管的顯示(使用匯編語言、C語言完成)按下“計(jì)數(shù)”按鍵時(shí),中斷程序累加計(jì)數(shù),通過數(shù)碼管顯示;

28、按下“清零”按鍵時(shí),數(shù)碼管清零;#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit k1=P36;sbit l1=P34;uint i;uchar code DSY_CODE=0xC0,0xF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;void DeleayMS(uint x)uchar t;while(x-) for(t=0;t<120;t+);void main()EA=1;EX0=1;IT0=1;l1=1;P0=P1=P2=0XFC0;while(1)while(k1=0) /有鍵按下嗎?(k1=0 ?) while(k1=0) /確實(shí)是有鍵按下,則: l1=0; i=0; P0=P1=P2=0XC0; while(!k1); /等待按鍵放開 void int0_0() interrupt 0 i+; if(i<10) P0=DSY_CODEi%10; P1=DSY_CODE0,P2=DSY_CODE0; if(i>=10&&i<100) P0=DSY_CODEi%10,P1=DSY_CODEi%100/10,P2=DSY_CODE0;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論