单片机程序123
单片机习题答案1-2

习题一1.什么是单片机,和微机相比拟,它有什么优点?2.请表达51系列单片机的主要产品及其特点。
3.除51系列单片机外,常用的单片机还有哪些型号,各有什么优点?4.单片机中常用的数制有哪些,它们之间相互如何转换?5.计算机中常用的二进制编码有哪些,请分别予以表达。
6.〔1〕10和〔-1〕10的原码、反码和补码分别是多少?习题二1.单片机主要应用在什么领域?2. 89C51单片机包含哪些主要逻辑功能部件? 各有什么主要功能?3.89C51单片机EA端如何使用?4.什么是机器周期、指令周期?89C51指令周期、机器周期和时钟周期的关系如何?当主频为12MHz时,一个机器周期等于多少微秒?执行一条最长的指令需多少微秒?5.如何认识89C51存储器空间在物理结构上可划分为四个空间,而在逻辑上又可划分为三个空间?各空间的寻址范围、寻址方式是什么?6.89C51有哪些主要的特殊功能存放器,分布在哪里?7.内部RAM低128B从功能和用途方面,可划分为哪三个区域?8.89C51内部RAM有几组工作存放器?每组工作存放器有几个工作存放器?存放器组的选择由什么决定?9.89C51的外部RAM和I/O口是如何编址的,如何寻址?10.89C51的程序存储器的寻址空间是多少,如何区别片内程序存储器和片外程序存储器的?11.89C51的位寻址区在哪里,位寻址空间是多少?12.什么是堆栈,什么是SP,89C51的堆栈位于什么地方,复位后堆栈指针初值是多少,一般将SP设置为多少?进栈、出栈时堆栈指针将怎样变化?13.单片机包括哪两种复位方式,在单片机应用系统中为何需要系统复位,复位后主要存放器的状态如何?14.89C51的P3口各引脚的第二功能是什么?15.89C51有几种低功耗方式,如何进入和退出?习题三1.什么是指令,什么是指令系统?2.89C51总共有多少条指令,分为哪几类?3.89C51有哪些寻址方式,各自的寻址空间如何?4.说明以下指令中源操作数采用的寻址方式。
单片机指令表(最全)

单片机指令以A开头的指令有18条,分别为:1、ACALL addr11指令名称:绝对调用指令指令代码:A10 A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0指令功能:构造目的地址,进行子程序调用。
其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。
操作容:PC←(PC)+2SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC10~0←addrl0~0字节数: 2机器周期:2使用说明:由于指令只给出子程序入口地址的低11位,因此调用围是2KB。
2、ADD A,Rn指令名称:寄存器加法指令指令代码:28H~2FH指令功能:累加器容与寄存器容相加操作容:A←(A)+(Rn), n=0~7字节数: 1机器周期;1影响标志位:C,AC,OV3、ADD A,direct指令名称:直接寻址加法指令指令代码:25H指令功能:累加器容与部RAM单元或专用寄存器容相加操作容:A←(A)+(direct)字节数: 2机器周期:1影响标志位:C,AC,OV4、ADD A,@Ri ’指令名称:间接寻址加法指令指令代码:26H~27H指令功能:累加器容与部RAM低128单元容相加操作容:A←(A)+((Ri)), i=0,1字节数: 1机器周期:1影响标志位:C,AC,OV5、ADD A,#data指令名称:立即数加法指令指令代码:24H指令功能:累加器容与立即数相加操作容:A←(A)+data字节数: 2机器周期:1影响标志位:C,AC,OV6、ADDC A,Rn指令名称:寄存器带进位加法指令指令代码:38H~3FH指令功能:累加器容、寄存器容和进位位相加操作容:A←(A)+(Rn)+(C), n=0~7字节数: 1 机器周期:1 影响标志位:C,AC,OV7、ADDC A,direct指令名称:直接寻址带进位加法指令指令代码:35H指令功能:累加器容、部RAM低128单元或专用寄存器容与进位位加操作容:A←(A)+(direct)+(C)字节数: 2机器周期:1影响标志位:C,AC,OV8、ADDC A,@Ri指令名称:间接寻址带进位加法指令指令代码:36H~37H指令功能:累加器容, 部RAM低128单元容与进位位相加操作容:A←(A)+((Ri))+(C), i=0,1字节数: 1机器周期:1影响标志位:C,AC,OV9、ADDC A,#data指令名称:立即数带进位加法指令指令代码:34H指令功能:累加器容、立即数与进位位相加操作容:A←(A)+data+(C)字节数: 2机器周期:1影响标志位:C,AC,OV10、AJMP addr11指令名称:绝对转移指令指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,实现程序转移。
平凡的单片机教程

平凡的单片机教程渭南电视台左江源整理2003年4月23日第一课单片机概述一、何谓单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
天!PC中的CPU一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。
不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只8只引脚。
为什么会这样呢?功能有强弱,打个比方,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。
另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。
既然如此,单片机的功能肯定不强,干吗要学它呢?话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用PIII?应用的关键是看是否够用,是否有很好的性能价格比。
所以8051出来十多年,依然没有被淘汰,还在不断的发展中。
二、MCS51单片机和8051、8031、89C51等的关系我们平常老是讲8051,又有什么8031,现在又有89C51,它们之间究竟是什么关系?MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
单片机教案(数码管显示器接口技术)[1]123
![单片机教案(数码管显示器接口技术)[1]123](https://img.taocdn.com/s3/m/741316e5360cba1aa811da96.png)
数码管显示器接口技术一、 LED数码管的结构由8段发光二极管组成。
其中7段组成“8”字,1段组成小数点。
通过不同的组合,可用来显示数字0~9、字母A~F及符号“.”。
LED数码管有共阴极和共阳极两种结构。
二、 LED数码管的工作原理发光二极管导通→亮,不导通→暗。
这样就构成了字符的显示。
其十六进制的编码表如下:三、数码管接口电路1、静态显示方式(硬件接口方法)这就是我们在数字电路中所学的内容,在数据总线上的信号须经I/O接口电路并锁存,然后通过译码器,就可以驱动LED 显示器中的段发光。
这种方式使用的硬件较多(显示器的段数和位数越多,电路越复杂),缺乏灵活性,且只能显示十六进制数。
2、动态显式方式(软件接口方法)这种接口方法是以软件查表来代替硬件译码,既省去了译码器,又能显示更多段的字符和更多位的LED显示器。
所以广泛应用于单片机系统的显示。
⑴连接方式①将单片机的输出送入可编程的8155芯片,然后利用8155的I/O口提供两路输出信号(一路是段控信号,另一路是位控信号)。
②将各位数码管的a~h端分别并在一起(若有6个数码管,则将它们6个a对a,6个b对b......6个h对h相并接),再和上面的一路I/O口输出的8位段控信号相连,以获得显示代码,对应要发光的段。
③将各位数码管的公共端(共阴极或共阳极)分别与上面的另一路I/O口相连(每一位公共端对应I/O口中的一位),以获得位控信号使该位LED发亮。
④为了存放显示的数字或字符,通常在8155的内部RAM中设置显示缓冲区,其存储单元个数与LED显示器的位数相同。
⑵显示原理①每一时刻只有一位LED被点亮,在显示代码的作用下显示信息。
②各位LED轮流被点亮,在各自的显示代码的作用下分别显示各自的信息。
③只要利用发光二极管的余光和人眼的驻留效应(即适当调整每位LED的点亮时间和时间间隔),就可以获得稳定的显示输出。
[应用实例]使用并行接口芯片8155扩展6位动态数码管显示电路,轮流点亮各LED数码管,每位点亮2ms,重复此过程。
单片机课程学习总结

《单片机》课程学习总结《单片机》这门课程我已经学了一个学期了,在这一个学期的学习过程中,我一开始不怎么懂得编程,但慢慢的我现在已经不仅会读程序还会写程序了。
真为自己一个学期来努力学到的单片机知识只是而感到高兴。
怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。
当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。
一个好的学习方法,能让你事半功倍,这里说说我学习单片机的经历和方法。
我觉得学习单片机首先要懂得C语言,因为单片机大多说都是靠程序来实现的,如果看不懂程序或则不懂的编程是很难学会单片机的。
学习单片机首先要明白一个程序是怎么走的,要完全懂得程序每一个步骤的意思。
其次要懂得每一条指令的意思,不能盲目地去靠背指令,这是记得不牢靠的,最主要的还是靠了解。
学习单片机最主要的对89C51芯片内部结构有全方面的,只要了解了89C51才能知道单片机实现什么样的功能和作用,才能对单片机有更深一步的了解。
通过一个学期《单片机》这门课程的学习,我也从中有了不少心得和体会想和大家分享一下。
万事开头难、要勇敢迈出第一步。
开始的时候,不要老是给自己找借口,不要说单片机的程序全是英文,自己看不懂。
遇到困难要一件件攻克,不懂指令就要勤奋看书,不懂程序就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。
然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少。
然后建个程序,加入项目中,再写代码、编译、运行。
必须熟悉这一套工序。
个人认为,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。
单片机是注重理论和实践的,光看书不动手,是学不会的。
知识点用到才学,不用的暂时丢一边。
厚厚的一本书,看着人头都晕了,学了后面的,前面的估计也快忘光了,所以,最好结合实际程序,用到的时候才去看,不必说非要把书从第一页看起,看完它才来写程序。
单片机网址大全

图标/网站名称网址简单介绍21IC中国电子网电子工程师的网站 (嵌入式系统,单片机,DSP,EDA,测试测量,元器件,通信,电源,微电子,半导体)。
430开发网 430开发网。
51单片机世界 51单片机世界。
单片机世界单片机世界欢迎你!学单片机这里是入口。
世纪开发网世纪开发网。
单片机爱好者单片机爱好者。
超前科技超前科技CQKJ单片机仿真器产品专栏 C51仿真器,keil C51仿真机。
平凡单片机工作室单片机教学与学习网站。
单片机工作室单片机工作室。
51开发网 51开发网。
51新手交易网 51新手交易网。
孙冠单片机孙冠单片机。
嵌入开发网嵌入开发网。
老古开发网单片机与嵌入式系统专业网站。
晓奇工作室老古开发网。
单片机学习网晓奇工作室。
利舒技术实验室利舒技术实验室。
Xmcu 单片机工作室单片机网单片机知识、实验板、编程仿真工。
PIC学习网单片机,编程器,仿真器,单片机学习,PIC单片机原理,PIC单片机简介,PIC单片机字习,PIC单片机资料。
小龙微控小龙微控--个人网站。
51测试网 51测试网。
致祥电子致祥电子。
电子制作实验室电子制作实验室。
亦峰电子亦峰电子。
DevARM 开发网 DevARM 开发网。
超业电子超业电子。
龙人电子龙人电子。
中国电子技术信息网单片机,嵌入式系统,IC,EDA,元器件,电路,电源,通信,测量,编程,仿真,SMS,GPRS,ISP,电子论坛,软件下载,信息发布。
电子工程师网站单片机,FPGA,嵌入式系统,电路板设计。
单片机C语言C51BBS论坛单片机C语言C51BBS论坛。
中国IC网 IC信息发布比高科技比高科技。
北京仪器商城生产销售仪器,仪器仪表,国内大型仪器企业,仪器仪表商城 www_17web_com亿涛电子设计工作室亿涛电子设计工作室。
单片机坐标单片机 C51 单片机C语言 C语言原代码单片机毕业论文单片机毕业设计源代码芯片驱动程序基本电路设计 AVR单片机单片机人才推荐哈工大实验编程工具下载实用工具。
单片机原理作业(CXH)

MCS-51单片机作业第一部分基础练习一1.1234?X2=2512?问这是几进制的运算?在9进制系统中,469+??=10092.将下列二进制数转换为十进制数和十六进制数:10111101B 110111101B111011010·101B 11110111101110·111011111B3.将下列十进制数转换为二进制数,对于小数,可以仅取4位130 123·47 990·6 256 11·114.计算下列二进制算式:10100110B-101B 11011110B+1101B1110B×1011B 10111010B÷110B5.将下列算式转换成十六进制和二进制数,对于小数,可以仅取二位十六进制数12767 60000 123·14365535 32767 4096·36.计算下列算式,结果仍用十六进制数表示,仅取二位小数123H+0EFDH 1010011011B-0FDH0EAH×0CDH 666÷66H练习二1、计算题1:0DCH O R 65H 0E9H AND 7CH 0BAH EOR 5DH6DH AND 7EH OR 0ABH EOR 0D6H6DH AND (7EH OR (0ABH EOR 0D6H))2、计算题2:123 AND 10100101B 222 EOR 20011010110B OR 97 1DH EOR 11111111B3、应用题1:某计算机有一个8位并口,读入的数据存在A寄存器中,问:(1)判断0、2、6、7位是否全为0,A才变为全0,用什么运算?(2)判断1、3、4、5位中是否有任何一位为1,就使得A非0,用什么运算?4、应用题2:在Apple计算机中,磁盘存储信息中采用了“4-4编码”,即把一个字节的8 位D7 D6 D5 D4 D3 D2 D1 D0变成二个编码字节:1 D7 1 D5 1 D3 1 D1和1 D6 1 D4 1 D2 1 D0 请给出一种简便方法,将编码的两两字节还原成原来的一字节(解码)。
No.5C51程序设计

– 指定存储区的指针
• 指定存储区的指针在指针的声明中经常包含一个 存储类型标识符指向一个确定的存储区。 • 例如: char data *str; int xdata *ptr; long code *tab;
• 指定存储区指针存放时不再像通用指针那样需 要保存存储类型,指向idata、data 、bdata 和pdata存储区的指针只需要一个字节存放, 而code和xdata指针也才需要两字节。从而减 少了指针长度,节省了存储空间。
– 如:sfr16 TL0=0x8A;
– 特殊功能寄存器中特定位的定义
• 在C51中可以利用关键字sbit定义可独立寻址访问 的位变量
• 对一般位变量的定义
– 当位变量位于内部RAM的可位寻址区(20H~2FH 单元)时,可以利用C51编译器提供的bdata存储器 类型进行访问 – 带有bdata类型的变量可以进行字节或位寻址,用 sbit指定bdata变量的相应位后就可以进行位寻址。
– 考虑存储器结构 – 正确使用片内外RAM、特殊功能寄存器 – 正确处理接口芯片收发数据 – 不需要具体组织和分配存储器资源 – 结构模块化,思路与思维相同 – 但要与单片机结构相关联,否则不能正确映射
• C程序:
• C51:
– – – –
自动完成存储单元分配(内定义) 可编制常见接口芯片通用驱动函数 可采用模块化设计应用程序 加快开发速度
var=XBYTE[0x8000]; 头文件内定义的函数 XBYTE[0x8000]=0x21;
P71
– 例如:unchared xdta xram[0x8000]_at_0x1000; //在外部RAM1000H开始定义了一个一维数组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<at89x52.h>
unsigned char
duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83 ,0xc6,0xa1,0x86,0x8e,0x89,0xc7,0x8c,0xbf,0xff};
//数组,定义共阳极数码管显示段码:
0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,H,L,P,-,熄灭。
void delay(int i) //延时函数,带参数i。
{ //在调用函数时通过设置参数,改变延时时间。
int j=0,k=0;
for(j=0;j<i;j++)
for(k=0;k<164;k++);
}
main()
{
while(1)
{
P3=0xff; //按键接口P3置1。
if(P3==0xfe){P2=0xc0 ;delay(500);} //P3.0按键按下,显示0 else if(P3==0xfd){P2=0xf9 ;delay(500);} //P3.1按键按下,显示1
else if(P3==0xfb){P2=0xa4 ;delay(500);} //P3.2按键按下,显示2
else if(P3==0xf7){P2=0xb0 ;delay(500);} //P3.3按键按下,显示3
else if(P3==0xef){P2=0x99 ;delay(500);} //P3.4按键按下,显示4
else if(P3==0xdf){P2=0x92 ;delay(500);} //P3.5按键按下,显示5
else if(P3==0xbf){P2=0x82 ;delay(500);} //P3.6按键按下,显示6
else if(P3==0x7f){P2=0xf8 ;delay(500);} //P3.7按键按下,显示7
}
}
2、switch-case语句程序设计
/************************************************
按键显示程序
设计:黄有全
2010年10月7日
关键词:if语句、switch-case语句应用
单片机硬件连接:P3口接按键,P2口接共阳极数码管,静态显示。
************************************************/
#include<at89x52.h>
unsigned char
duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83 ,0xc6,0xa1,0x86,0x8e,0x89,0xc7,0x8c,0xbf,0xff};
//数组,定义共阳极数码管显示段码:
0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,H,L,P,-,熄灭。
void delay(int i) //延时函数,带参数i。
{ //在调用函数时通过设置参数,改变延时时间。
int j=0,k=0;
for(j=0;j<i;j++)
for(k=0;k<164;k++);
}
main()
{
while(1)
{
P3=0xff; //按键接口P3置1
switch(P3)
{
case 0xfe: P2=0xc0;delay(500);break; //P3.0按键按下,显示0。
case 0xfd: P2=0xf9;delay(500);break; //P3.1按键按下,显示1 case 0xfb: P2=0xa4;delay(500);break; //P3.2按键按下,显示2 case 0xf7: P2=0xb0;delay(500);break; //P3.3按键按下,显示3 case 0xef: P2=0x99;delay(500);break; //P3.4按键按下,显示4 case 0xdf: P2=0x92;delay(500);break; //P3.5按键按下,显示5 case 0xbf: P2=0x82;delay(500);break; //P3.6按键按下,显示6 case 0x7f: P2=0xf8;delay(500);break; //P3.7按键按下,显示7
}
}
}
无通风二通阀2突然发。