最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

單片機(jī)復(fù)習(xí)題

2023-05-23 08:24 作者:生物yes  | 我要投稿

一、填空:

在keil C51編譯器中,無符號(hào)整型變量占數(shù)據(jù)存儲(chǔ)器空間 2 字節(jié),其數(shù)值表達(dá)范圍是? 0~65535? 。

將01111100 B轉(zhuǎn)化為16進(jìn)制數(shù)據(jù)為0x 7c? ? ? 。在AT89S51的單片機(jī)標(biāo)有“24PC”,S表示 該芯片含有可串行下載功能的Flash存儲(chǔ)器 ,24代表 速度為24MHz? ? ? ?,P表示 表示塑料直插雙列DIP封裝 ,C表示 商業(yè)用品 。若MCS-51單片機(jī)從片內(nèi)程序存儲(chǔ)器執(zhí)行程序,引腳必須接 低電平 。

若MCS-51單片機(jī)從片外程序存儲(chǔ)器開始執(zhí)行程序,引腳必須接 高電平 。

引腳為? 外部程序存儲(chǔ)器選通信號(hào)使能腳(低電平有效) ,用于? 實(shí)現(xiàn)外部ROM單元的讀操作? 。

、引腳的作用是 分別是讀的時(shí)候用的引腳,寫的時(shí)候用的引腳 。(WR和RD的時(shí)序是51單片機(jī)自動(dòng)產(chǎn)生的,在執(zhí)行一條指令movx A,@dptr(讀時(shí)序)或movx @dptr,A(寫時(shí)序)都是片外傳值的,當(dāng)然讀寫的時(shí)候都是產(chǎn)生低跳變。)

XTAL1與XTAL2引腳功能為 片內(nèi)震蕩電路輸入端,片內(nèi)震蕩電路輸出端 ,用示波器觀察該引腳,在單片機(jī)正常工作時(shí),其波形應(yīng)為頻率為? 晶振寫真頻率方波? ?波形。(填寫內(nèi)容包括頻率參數(shù))

當(dāng)89C51復(fù)位時(shí),PC的內(nèi)容是:? ?0000H? ,正常工作時(shí)RST引腳的電平是:低電平 ,當(dāng)該引腳上出現(xiàn)持續(xù)2個(gè)以上的機(jī)器周期的? 高? 電平時(shí),可實(shí)現(xiàn)復(fù)位操作。

若MCS-51單片機(jī)使用晶振頻率為6MHz時(shí),其復(fù)位持續(xù)時(shí)間應(yīng)該超過? ?4us? ?。

ALE引腳為? 地址所存允許信號(hào)使能腳 ,用于 地址鎖存有效信號(hào)(使地址鎖存) ,當(dāng)不訪問外部存儲(chǔ)器時(shí),該端口以時(shí)鐘頻率的? 六分之一? 輸出固定的正脈沖信號(hào)。

P3.0和P3.1引腳還分別具有RXD和TXD的作用,在異步串行通信中,RXD引腳 串行輸入口 ,TXD 串行輸出口 。

引腳的作用:外部中斷0/外部中斷1中斷源,引入中斷請求信號(hào)。

在使用8051單片機(jī)計(jì)數(shù)器功能時(shí),外部計(jì)數(shù)脈沖從? T0/T1即P3.4/P3.5 引腳引入單片機(jī)。

MCS-51系列單片機(jī)的有_4__組并行I/O端口,其中___P0__、___P2__和___P3___具有第二功能。P0口可以作為數(shù)據(jù)總線和? ? ?低八位地址總線? ?,P2口作為 高八位地址? ? ? ? ? ?。

8051單片機(jī)P0口在作為普通IO口使用時(shí),作為輸出口需要? 上拉電阻? ?。而所有IO口在作為輸入口時(shí),需要向IO寄存器? ? 寫1? ? 。

將定時(shí)/計(jì)數(shù)器0用于定時(shí)方式,則計(jì)數(shù)脈沖來自于 內(nèi)部時(shí)鐘? ;若工作于計(jì)數(shù)方式,則計(jì)數(shù)脈沖必須來自于? ?外部脈沖 ,且計(jì)數(shù)頻率不超過晶振頻率的? ?24分之一? ?。

CPU響應(yīng)中斷后,不能自動(dòng)清除中斷請求“1”串行口中斷 。

數(shù)據(jù)存儲(chǔ)器在物理上和邏輯上都分為兩個(gè)地址空間,一個(gè)是由128B的 RAM(內(nèi)部數(shù)據(jù)存儲(chǔ)器) 和21個(gè) 特殊功能寄存器? ? ? ?。另外一個(gè)是片外最大可擴(kuò)充 64? ? KB的數(shù)據(jù)存儲(chǔ)器。其中片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)地址為? ?0030H? ? ?,劃分為 工作寄存器區(qū)? ? ? ?、? ? 位尋址區(qū)? ? ? ?以及? 通用RAM區(qū)? ? ? ? ?3部分。

8051單片機(jī)可以最大尋址的外部存儲(chǔ)器地址范圍是? 0000~FFFFH? ? ? ? ?。

8051單片機(jī)有四組工作寄存器,當(dāng)前正在使用哪一組,由特殊功能寄存器 PSW 的RS0、RS1兩位的狀態(tài)決定。

C51編程語言中,不僅可以設(shè)定變量的數(shù)據(jù)類型,還可以設(shè)定存儲(chǔ)器類型(將變量存儲(chǔ)在哪里),data、bdata(位尋址區(qū)20H~2FH)、idata、pdata(64kRAM)、xdata、code分別將變量存儲(chǔ)在什么區(qū)域。答:data idata xdata? code分別是存于片內(nèi)低128字節(jié),高128字節(jié),片外RAM中,和程序存儲(chǔ)器中。

C51編程語言中,SFR關(guān)鍵字的作用是 對(duì)51內(nèi)部寄存器定義一個(gè)地址? ,SBIT的作用是? 定義特殊功能寄存器位變量? ,

特殊功能寄存器IE用于實(shí)現(xiàn)中斷系統(tǒng)的兩級(jí)使能控制,若開啟定時(shí)器1以及外部中斷0,試寫出IE寄存器所對(duì)應(yīng)的16進(jìn)制數(shù)值? 0x89? ? ? ? ?。

若中斷優(yōu)先級(jí)控制寄存器IP的值設(shè)為0x12,請寫出此時(shí)五個(gè)中斷源的優(yōu)先級(jí)順序(由高到低)? T0? ? 、? 串行口? ? ? 、? 外部中斷0? ? ?、 外部中斷1? ? ? 、 T1? ? ? 。

特殊功能寄存器TCON中的TR0和TR1分別是T/C0和T/C1的? 啟動(dòng)/停止控制位? ? ? ? 。

TMOD寄存器中的GATE位用來? ?指定外部中斷請求是否參與對(duì)定時(shí)器/計(jì)數(shù)器的控制? ,若GATE位為1,則除了需要對(duì)應(yīng)的TRi為1之外,還需要? ? ? 引腳同時(shí)為高電平才可能啟動(dòng)相應(yīng)的定時(shí)器。

當(dāng)SCON寄存器的“REN”位設(shè)置為邏輯1時(shí),表明? ?串行口允許控制接收 。

將波特率設(shè)定成加倍,需要將特殊功能寄存器 PCON 的最高位設(shè)置成1。

IT0用于設(shè)定外部中斷0的觸發(fā)方式,當(dāng)其為邏輯0時(shí),表明 低電平觸發(fā) ,當(dāng)其為邏輯1時(shí),表明 下降沿觸發(fā)? ?。

DAC0832內(nèi)部有輸入鎖存器和DAC寄存器兩個(gè)緩沖器,由這兩個(gè)緩沖器的狀態(tài)可使DAC0832工作在 單緩沖模式? ? 、 雙緩沖模式? ?和? 直通模式? ?三種方式。

ADC0809將模擬量轉(zhuǎn)化成數(shù)字量之后,EOC引腳為 高 電平。

DAC和ADC的分辨能力都和自身位數(shù)有關(guān),位數(shù)越大,分辨能力越 強(qiáng)? 。

74LS273通常用來做簡單 輸出 接口擴(kuò)展;而74LS244則常用來做簡單 輸入 接口擴(kuò)展

在片外擴(kuò)展一片2764程序存儲(chǔ)器芯片要 13 根地址線。





二、簡答題:

1? 單片機(jī)最小系統(tǒng):含義及畫圖。

單片機(jī)正常運(yùn)行的最低配置:它有一系列模塊組成

1)復(fù)位系統(tǒng):當(dāng)引腳9出現(xiàn)2個(gè)機(jī)器周期以上高電平時(shí),單片機(jī)復(fù)位,程序從頭開始運(yùn)行.

2) 時(shí)鐘系統(tǒng):有振蕩器電路產(chǎn)生頻率等于晶振頻率,這時(shí)用的是外界晶振。

? ? ? ? ? ? 也可以又外部單獨(dú)輸入,此時(shí)XTAL2腳接地,時(shí)鐘信號(hào)由XTAL1輸入.

3) 電源系統(tǒng):VCC,和 GND引腳,供電電壓4--5.5V.

2? 掃描法識(shí)別矩陣式鍵盤的程序步驟。

3? 8051單片機(jī)串行通信中主從式多機(jī)通信原理。

4? 8051單片機(jī)有幾個(gè)中斷源,有幾級(jí)中斷優(yōu)先等級(jí)?如果所有中斷源處于同一優(yōu)先等級(jí),且同時(shí)產(chǎn)生中斷請求,CPU將按照何種順序響應(yīng)中斷?

8051單片機(jī)有五個(gè)中斷源,兩個(gè)中斷優(yōu)先等級(jí);

CPU將按照自然優(yōu)先級(jí)(高到低):外部中斷0,定時(shí)器/計(jì)數(shù)器中斷0,外部中斷1,定時(shí)器/計(jì)數(shù)器中斷1,串行口。

5? 8051單片機(jī)各中斷源的中斷標(biāo)志是什么?如何產(chǎn)生?如何清除的?串口中斷,外部中斷標(biāo)志是IF0,IF1 ;定時(shí)器中斷標(biāo)志是TF0,TF1;串口中斷標(biāo)志是RI,TI ;外部中斷和定時(shí)器中斷硬件置位,硬件清零,軟件不用管,串口中斷必須使用軟件清零(向TI和RI寫0)



TF1和TF0:分別為兩個(gè)定時(shí)/計(jì)數(shù)器中斷標(biāo)志,當(dāng)定時(shí)/計(jì)數(shù)器計(jì)數(shù)值滿產(chǎn)生溢出時(shí),由硬件自動(dòng)置1,并向CPU申請中斷。該

標(biāo)志位一直保持到CPU響應(yīng)中斷后,由硬件自動(dòng)清0;

IE1和IE0:為外部中斷1和外部中斷0的中斷請求標(biāo)志位,當(dāng)外部中斷源發(fā)出中斷請求時(shí),由硬件自動(dòng)置1,并向CPU申請中斷。該標(biāo)志位一直保持到CPU響應(yīng)中斷后,由硬件自動(dòng)清0;

RI和TI:分別是串口發(fā)送/接受標(biāo)志。在方式0下,發(fā)送/接受完第八位數(shù)據(jù)位時(shí),由硬件置位;在其它方式下,當(dāng)開始發(fā)送停止位時(shí),由硬件將T1置位,即向CPU申請中斷;當(dāng)接受到停止位時(shí),R1置位,必須由軟件清0;

6? 8051單片機(jī)串行通信中,奇偶校驗(yàn)原理。

設(shè)置串口工作模式為2或3,可以用第9位數(shù)據(jù)位作奇偶檢驗(yàn)位,例如發(fā)送一字節(jié)若這字節(jié)為奇檢驗(yàn)位則將第9位數(shù)據(jù)位置1,此時(shí)必須通過改變奇偶校驗(yàn)位TB8這樣在另一單片機(jī)接收時(shí)判斷第9位數(shù)據(jù)位為一時(shí)才接收就能完成奇檢驗(yàn)。(僅供參考)

7? 什么是數(shù)碼管的動(dòng)態(tài)顯示?

答:所謂動(dòng)態(tài)顯示就是一位一位輪流點(diǎn)亮每位顯示器,在同一時(shí)刻只有一位顯示器在工作,但由于人眼的視覺殘留效應(yīng)和發(fā)光二極管熄滅時(shí)的余暉,將出現(xiàn)多個(gè)字符“同時(shí)”點(diǎn)亮的現(xiàn)象。

8? 8051單片機(jī)定時(shí)器有幾種工作方式?各方式中的計(jì)數(shù)寄存器是幾位的?

定時(shí)器0有方式0,1,2,3共四種工作方式,而定時(shí)器0有方式0,1,2共三種工作方式;

(只要定時(shí)器0工作在方式3,定時(shí)器1,停止工作);

方式0,高八位,低五位共13位;

方式1,高八位,低八位共16位;

方式2,只有八位;

方式3,兩個(gè)八位;

9? 簡述8051單片機(jī)串行口有幾種工作方式,各自特點(diǎn)是什么?

方式1,

方式2.

方式3,

10 串口初始化編程,如:已知fosc=11.0592MHz,定時(shí)器1工作在方式2下,波特率欲設(shè)定為9600bps,請寫出串口初始化程序。

? ? ?MOV TMOD,#20H

? ? ?MOV TL1,#0FDH

? MOV TH1,#0FDH

? SETB TR1

? MOV SCON,#50H

? MOV R0,#55H

? SETB EA

? SETB ES

11 8051單片機(jī)的三總線結(jié)構(gòu)是什么?

數(shù)據(jù)總線,地址總線,控制總線。稱為三總線

數(shù)據(jù)總線,地址總線,控制總線。稱為三總線


12 8051單片機(jī)的主要特性是什么?

8051是MCS-51系列單片機(jī)中的代表產(chǎn)品,它內(nèi)部集成

了功能強(qiáng)大的中央處理器,包含了硬件乘除法器、21個(gè)

專用控制寄存器、4kB的程序存儲(chǔ)器、128字節(jié)的數(shù)據(jù)存

儲(chǔ)器、4組8位的并行口、兩個(gè)16位的可編程

定時(shí)/計(jì)數(shù)器、一個(gè)全雙工的串行口以及布爾處理器。

8051中集成了完善的各種中斷源,用戶可十分方便地

控制和使用其功能,使得它的應(yīng)用范圍加大,可以說

它可以滿足絕大部分的應(yīng)用場合。


三、程序設(shè)計(jì)類題目:

1要求:編寫基于定時(shí)器的LED流水燈閃爍程序,每1S燈的狀態(tài)變化一次。

1c語言

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

uint t=0,n=0;

uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void main(void)

{

? ? TH0=0X3C;?

? ? TL0=0XB0;

? ? EA=1;??

? ? ET0=1;

? ? TR0=1;

? ? TMOD=0X01;?

? ? P1=0xff;

while(1)

{

if(n==10)

{

n=0;

P1=table[t];

t++;

if(t==8) t=0;

}

}

}

void timer0()interrupt 1

{

n++;

TH0=0X3C;

TL0=0XB0;

}



2要求:根據(jù)按鍵的不同、要求編寫LED燈的變化程序。例如:當(dāng)?shù)谝粋€(gè)按鍵按下時(shí)、實(shí)現(xiàn)8個(gè)LED燈依次閃滅(流水燈),每個(gè)燈的閃滅間隔為0.5秒。第二個(gè)按鍵按下時(shí),實(shí)現(xiàn)從左面開始奇數(shù)號(hào)燈亮滅,閃爍頻率為1Hz。當(dāng)?shù)谌齻€(gè)按鍵按下時(shí),實(shí)現(xiàn)從左面開始偶數(shù)個(gè)燈亮滅,閃爍頻率為2Hz,當(dāng)所有按鍵全部按下時(shí),實(shí)現(xiàn)LED燈逐個(gè)點(diǎn)亮,然后再依次點(diǎn)滅。循環(huán)往復(fù)。

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit key1=P3^0;

sbit key2=P3^1;

sbit key3=P3^2;

uint m;

uchar code a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar code b[]={0x55,0xff};

uchar code c[]={0xaa,0xff};

uchar code d[]={1,3,7,15,31,63,127,255};

void DelayMS(uint x)

{

? uchar i;

?while(x--)

?{

? ?for(i=60;i>0;i--);

?}

}

void main()

{

P3=0xff;

while(1)

{

P1=0x00;

while(key1==0&&key2==0&&key3==0)

{

for(m=0;m<8;m++)

? ? {

P1=(d[m])%256;

DelayMS(50);

? }

for(m=0;m<8;m++)

? ? {

P1=(d[m])%256;

P1=~P1;

DelayMS(50);

? }

}

? ? while(key1==0)

?{

if((key1==0)&&(key2==0)&&(key3==0)==1)

? ?{break;}

for(m=0;m<8;m++)

{

P1 = a[m];

P1 = ~P1;

DelayMS(50);

? ?}

?}

? ? while(key2==0)

{

if((key1==0)&&(key2==0)&&(key3==0)==1)

? ? ? {break;}

for(m=0;m<2;m++)

{

P1 = b[m];

DelayMS(500);

? ?}

}

while(key3==0)

{

if((key1==0)&&(key2==0)&&(key3==0)==1)

? ? ? {break;}

for(m=0;m<2;m++)

{

P1 = c[m];

DelayMS(1000);

? ?}

}

}

}



3要求:編寫基于外部中斷顯示控制程序,要求初始顯示“001000”,完成基于外部中斷的數(shù)字顯示與調(diào)整程序。要求按下int0所對(duì)應(yīng)的按鈕,數(shù)字加1;按下int1對(duì)應(yīng)按鈕,數(shù)字減1。(數(shù)碼管顯示電路不一定這么復(fù)雜)

3c語言

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

sbit a1=P2^0;

sbit a2=P2^1;

sbit a3=P2^2;

sbit a4=P2^3;

sbit a5=P2^4;

sbit a6=P2^5;

uchar tt=0,count=160;

uint m=1000;

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90};

void init()

{

EA=1;

EX1=1;

EX0=1;

IP=0x08;

P2=0xff;

}

?

void delay(uint ms)

{

????uint x,y;

????for(x=ms;x>0;x--)

????????for(y=110;y>0;y--);

}

?

void display(uint num)

{

????uchar ge,shi,bai,qian,wan,shiwan;

????ge=num%10+0;

????shi=(num/10)%10+0;

??bai=(num/100)%10+0;

??qian=(num/1000)%10+0;

??wan=(num/10000)%10+0;

??shiwan=(num/100000)%10+0;

????a1=1;

????P0=table[shiwan];

????delay(1);

????a1=0;

????a2=1;

????P0=table[wan];

????delay(1);

????a2=0;

??a3=1;

????P0=table[qian];

????delay(1);

????a3=0;

??a4=1;

????P0=table[bai];

????delay(1);

????a4=0;

a5=1;

????P0=table[shi];

????delay(1);

????a5=0;

a6=1;

????P0=table[ge];

????delay(1);

????a6=0;

}

??

main()

{

init();

while(1)

{

??display(m);

}

}

void timer0() interrupt 0

{

??m=m++;

display(m);

}

void timer1() interrupt 2

{

m=m--;

display(m);

}

4要求:外部中斷改變流水燈的流動(dòng)方向和狀態(tài)轉(zhuǎn)換的延遲時(shí)間。

#include<reg52.h>

#include<stdio.h>

#define uint unsigned int

#define uchar unsigned char


void Delay(uint z)

{

? uint x,y;

? for(x=z;x>0;x--){

? ?for(y=110;y>0;y--){

}}}

?

void main()

{

? EX0=1;

? IT0=1;

? EX1=1;

? IT1=1;

? EA=1;

while(1)

{

P1=0xff;

}

}

void? into() interrupt 0

{

? uint i;

? for(i=0;i<4;i++)

? {

? ? P1=0x00;

? ? Delay(100);

? ? P1=0xff;

Delay(100);

? }

}

?

void? intr() interrupt 1

{?

? uint i;

? for(i=0;i<4;i++)

? {

P1=0xfe;

Delay(50);

P1=0xfd;

Delay(50);

P1=0xfb;

Delay(50);

P1=0xf7;

Delay(50);

P1=0xef;

Delay(50);

P1=0xdf;

Delay(50);

P1=0xbf;

Delay(50);

P1=0x7f;

Delay(50);

? }

}



5要求:數(shù)碼管動(dòng)態(tài)顯示默認(rèn)數(shù)字(如654321)。

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

sbit a1=P2^0;

sbit a2=P2^1;

sbit a3=P2^2;

sbit a4=P2^3;

sbit a5=P2^4;

sbit a6=P2^5;

unsigned long m=654321;

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90};

void init()

{

EA=1;

EX1=1;

EX0=1;

IT0=1;

IT1=1;

IP=0x08;

P2=0xff;

}

?

void delay(uint ms)

{

????uint x,y;

????for(x=ms;x>0;x--)

????????for(y=110;y>0;y--);

}

?

void display(unsigned long num)

{

????uchar ge,shi,bai,qian,wan,shiwan;

????ge=num%10+0;

????shi=(num/10)%10+0;

??bai=(num/100)%10+0;

??qian=(num/1000)%10+0;

??wan=(num/10000)%10+0;

??shiwan=(num/100000)%10+0;

????a1=1;

????P0=table[shiwan];

????delay(1);

????a1=0;

????a2=1;

????P0=table[wan];

????delay(1);

????a2=0;

??a3=1;

????P0=table[qian];

????delay(1);

????a3=0;

??a4=1;

????P0=table[bai];

????delay(1);

????a4=0;

a5=1;

????P0=table[shi];

????delay(1);

????a5=0;

a6=1;

????P0=table[ge];

????delay(1);

????a6=0;

}

??

main()

{

init();

while(1)

{

??display(m);

}}

void timer0() interrupt 0

{m=m++;

display(m);}

void timer1() interrupt 2

{m=m--;display(m);}


6要求:編寫基于定時(shí)器的LED指示燈閃爍程序。LED亮1秒,熄滅N(大于等于1的整數(shù))秒。

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit P10=P1^0;

uint t=0,i=0;

uint N=4;

void main(void)

{

????TH0=0X3C;

????TL0=0XB0;

????EA=1; ?

????ET0=1;

????TR0=1;

????TMOD=0X01;

while(1)

{ P10=0;

while(1)

{

if(t==10)

{

i=0;

P10=1;

}

if(i==10*N)

{

i=0;

t=0;

P10=0;

}

}

??}

}

void timer0()interrupt 1

{

t++;

i++;

TH0=0X3C;

TL0=0XB0;

}
7要求:利用定時(shí)器T1的中斷來使P1.7控制蜂鳴器發(fā)出1kHz的音頻信號(hào),假設(shè)系統(tǒng)時(shí)鐘頻率為12MHz。編寫定時(shí)器的方波發(fā)生器,要求采用定時(shí)器工作方式0。(具體方式可能變化)

#include <reg52.h>

sbit P17=P1^7;

main()

{

????TH0=(8192-500)/32;

????TL0=(8192-500)%32;

????EA=1; ?

????ET0=1;

????TR0=1;

????TMOD=0X00;

????P17=0;

while(1);

}

void timer0()interrupt 1

{

??P17=!P17;

????TH0=(8192-5000)/32;

????TL0=(8192-5000)%32;

}

?

8要求:編寫基于定時(shí)器方式1的LED單個(gè)數(shù)碼管顯示程序,要求以每隔1s數(shù)字加1,當(dāng)數(shù)字大于9時(shí),清0。

?

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90};

uint t=0,num=0;

void main(void)

{

????TH0=0x3c;

????TL0=0xb0;

????EA=1; ?

????ET0=1;

????TR0=1;

????TMOD=0X01;

??while(1)

{

if(t==10)

{

if(num>9)num=0;

t=0;

P0=~table[num];

num++;

}

}

}

void timer0()interrupt 1

{

??t++;

????TH0=0x3c;

????TL0=0xb0;

}

9要求:編寫基于定時(shí)器方式1的LED兩個(gè)數(shù)碼管顯示程序,要求初始顯示“00”,每按下一次按鍵數(shù)字加1,當(dāng)數(shù)字大于99時(shí),清0;小于0時(shí),保持不變。

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit key1=P3^7;

sbit key2=P3^6;

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90};

int num=20;

void delay(uint ms)

{

????uint x,y;

????for(x=ms;x>0;x--)

????for(y=110;y>0;y--);

}

void main(void)

{

??key1=1;

??key2=1;

??while(1)

{

??P0=table[(num/10)%10];

P2=table[num%10];

if(key1==0)

{

delay(100);

if(num>99)num=0;

P0=table[(num/10)%10];

P2=table[num%10];

num++;

}

if(key2==0)

{

num--;

delay(100);

if(num<0)num=0;

P0=table[(num/10)%10];

P2=table[num%10];

}

}

}


10要求:利用定時(shí)器功能編寫時(shí)、分、秒顯示程序。

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit a1=P2^0;

sbit a2=P2^1;

sbit a3=P2^2;

sbit a4=P2^3;

sbit a5=P2^4;

sbit a6=P2^5;

uint tt=0;

unsigned long m=32,f=23,s=13;

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90};

void init()

{

????TH0=0X3C;

????TL0=0XB0;

????EA=1; ?

????ET0=1; ??????

????TMOD=0X01; ???????

????TR0=1; ????

????P1=0x00;

}

void delay(uint ms)

{

????uint x,y;

????for(x=ms;x>0;x--)

????for(y=110;y>0;y--);

}

void display(unsigned long num)

{

????unsigned long ge,shi,bai,qian,wan,shiwan;

????ge=num%10+0;

????shi=(num/10)%10+0;

??bai=(num/100)%10+0;

??qian=(num/1000)%10+0;

??wan=(num/10000)%10+0;

??shiwan=(num/100000)%10+0;

????a1=1;

????P0=table[shiwan];

??delay(2);

????a1=0;

????a2=1;

????P0=(table[wan])+0x80;

????delay(2);

????a2=0;

??a3=1;

????P0=table[qian];

????delay(2);

????a3=0;

??a4=1;

????P0=(table[bai])+0x80;

????delay(2);

????a4=0;

a5=1;

????P0=table[shi];

????delay(2);

????a5=0;

a6=1;

????P0=table[ge];

????delay(2);

????a6=0;

}

?

main()

{

init();

while(1)

{if(tt>=10)

{tt=0;m++;

if(m>=60){m=0;f++;}

if(f>=60){f=0;s++;}

if(s>=24){s=0;}

??}

??display(m+100*f+ 10000*s);

}

}

void timer0() interrupt 1

{

TH0=0X3C;

TL0=0XB0;

tt++;

}

11要求:利用74LS165和串行口工作方式0,實(shí)現(xiàn)開關(guān)控制對(duì)應(yīng)LED的亮滅。

12要求:利用74LS164和串行口工作方式0擴(kuò)展單片機(jī)IO口,使多個(gè)數(shù)碼管顯示。

13要求:編寫基于串口方式1的雙機(jī)通信程序,要求左側(cè)單片機(jī)不斷發(fā)出0x55;右側(cè)單片機(jī)接收到數(shù)據(jù)后判斷是否是0x55,如果是,向左側(cè)機(jī)回0xaa。兩種編程方式的考察:查詢方式和中斷方式。

14要求:編寫AD0809的模擬量采集源程序,實(shí)現(xiàn)將所選通道的0~5V電壓以LED燈的形式顯示。延遲方式、中斷方式或查詢方式。

15要求:基于DAC0832輸出三角波,正弦波波形

16要求:利用74LS273、74LS244擴(kuò)展IO口,實(shí)現(xiàn)每個(gè)開關(guān)控制對(duì)應(yīng)的LED亮滅。


單片機(jī)復(fù)習(xí)題的評(píng)論 (共 條)

分享到微博請遵守國家法律
建始县| 岱山县| 天峻县| 安新县| 铜梁县| 禄丰县| 巴林右旗| 金川县| 西贡区| 泽普县| 龙川县| 双江| 垫江县| 宣恩县| 武强县| 乌鲁木齐县| 焉耆| 阜宁县| 肥乡县| 神池县| 奉新县| 资兴市| 永新县| 桃园县| 二连浩特市| 安远县| 祁东县| 达日县| 澄迈县| 三台县| 桐柏县| 买车| 漳浦县| 兴隆县| 车致| 达孜县| 万安县| 资阳市| 松原市| 巴马| 通山县|