09自动化单片机C语言复习资料(2)

2020-05-24 10:24

16、MCS-51的特殊功能寄存器分布在60H~80H地址范围内。( × ) 17、MCS-51系统可以没有复位电路。( × )

18、片内RAM与外部设备统一编址时,需要专门的输入/输出指令。( × ) 19、锁存器、三态缓冲寄存器等简单芯片中没有命令寄存和状态寄存等功能。( √ )

20、使用8751且 =1时,仍可外扩64KB的程序存储器。( √ ) 21、 若一个函数的返回类型为void,则表示其没有返回值。( √ ) 22、定时器与计数器的工作原理均是对输入脉冲进行计数。( × ) 23、SFR中凡是能被8整除的地址,都具有位寻址能力。( √ ) 24、不能用“sfr16” 直接访问定时器/计数器0和1。 ( √ ) 25、MCS-51单片机的程序存储器只能用来存放程序的。( × ) 26、串口中断标志由硬件清0。( ×)

27、特殊功能寄存器的名字,在C51程序中,全部大写。(√ ) 28、“sfr”后面的地址可以用带有运算的表达式来表示。( × ) 29、#include 与#include “reg51.h”是等价的。(√ ) 30、sbit不可以用于定义内部RAM的可位寻址区,只能用在可位寻址的SFR上。(× )

四、简答题

1、在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么? 答: (1)确定T/C的工作方式——编程TMOD寄存器; (2)计算T/C中的计数初值,并装载到TH和TL;

(3)T/C在中断方式工作时,须开CPU中断和源中断——编程IE寄存器; (4)启动定时器/计数器——编程TCON中TR1或TR0位。

2、什么是重入函数?重入函数一般什么情况下使用,使用时有哪些需要注意的地方?

答: 多个函数可以同时使用的函数,称为重入函数。

通常情况下,C51函数不能被递归调用,也不能应用导致递归调用的结构。有此限制是由于函数参数和局部变量是存储在固定的地址单元中。重入函数特性允许你声明一个重入函数。即可以被递归调用的函数。

重入函数可以被递归调用,也可以同时被两个或更多的进程调用。重入函数在实时应用中及中断服务程序代码和非中断程序代码必须共用一个函数的场合中经常用到。

3、8051引脚有多少I/O线?他们和单片机对外的地址总线和数据总线有什么关系?地址总线和数据总线各是几位?

答:8051引脚共有40个引脚,8051的地址总线由P2和P0口提供,P2口是地址总线的高8位,P0口是地址总线的低8位;数据总线由P0口提供;P0口的地址总线和数据总线是分时进行的,P0口的地址总线需要外接地址锁存器完成地址锁存。

地址总线共16位,数据总线是8位。

4、在有串行通信时,定时器/计数器1的作用是什么,怎样确定串行口的波特率? 答:在有串行通信时,定时器/计数器1的作用是串行口发生器。 串行口的波特率根据串行口的工作方式具有不同的计算方式: 方式0的波特率固定为晶体振荡器的十二分之一; 方式1的波特率=2SMOD.(定时器1的溢出率)/32; 方式2波特率=2SMOD.(fosc/64);

方式3波特率同方式1(定时器l作波特率发生器)。

5、如何消除键盘的抖动?怎样设置键盘中的复合键?

答:由于按键是机械开关结构,所以当用手按下其中一个键时,往往会出现所按键在闭合位置和断开位置之间发生跳几下后才会稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键的抖动,抖动的持续时间不一,但通常不会大于10ms。

若抖动问题不解决,就会引起对闭合键的多次读入。对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行扫描,而是延时大约10ms后再进行。由于一个键按下的时间一般会持续上百毫秒,所以延迟10ms后再扫描处理并不迟。

复合键可以仿照计算机复合键的处理方法,通常可以假设一个键具有复合功能,再与其它减的键值组合成复合键。

五、程序分析题

1、某单片机系统利用内部定时器T0实现走马灯功能,其中P1口接有8个发光二极管,晶振为12MHz,每隔1S亮的发光二极管(只有一个亮)移位一次,为了实现该功能,请将下面的程序补充完整。

# include #define uint unsigned int #define uchar unsigned char void delayms(uint); uchar aa; void main() { }

void delayms(uint xms) { }

uint i,j;

for(i=xms;i>0;i--)

//i=xms即延时约xms毫秒

aa=0xfe; while(1) { }

P1=aa;

delayms(500); //延时500毫秒

aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa

//赋初值11111110

//主函数

//声明子函数 //宏定义

//大循环

for(j=110;j>0;j--);

2、在实验板电路上实现1602液晶的第一行显示“I LOVE MCU!”,在第二行显示“WWW.TXMCU.COM”完成下面程序。 指令码 功能 D=1开显示;D=0关显示 0 0 0 0 1 D C B C=1显示光标;C=0不显示光标 B=1光标闪烁;B=0光标不显示 N=1当读写一个字符后地址加1,且光标加1 0 0 0 0 0 1 N S N=0当读写一个字符后地址减1,且光标减1 S=1当写一个字符时整屏显示左移或右移 S=0当写一个字符时整屏显示不移动 0 0 1 1 1 0 0 0 设置16*2显示,5*7点阵,8位数据接口

#include #define uchar unsigned char #define uint unsigned int

uchar code table[]=%uchar code table1[]=\sbit lcden=P3^4; //液晶使能端

sbit lcdrs=P3^5; //液晶数据命令选择端 sbit dula=P2^6; sbit wela=P2^7; uchar num; void delay(uint z) { }

void write_com(uchar com)

uint x,y; for(x=z;x>0;x--)

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

//申明U1锁存器的锁存端 //申明U2锁存器的锁存端

{ }

void write_data(uchar date) { } void init() { }

void main() {

init(); dula=0; wela=0; lcden=0;

write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;

}

write_com(0x80);

for(num=0;num<11;num++) { }

write_com(0x80+0x40); for(num=0;num<13;num++) { } while(1);

write_data(table1[num]); delay(5);

write_data(table[num]); delay(5);


09自动化单片机C语言复习资料(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高祖本纪文言知识检测

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: