单片机程序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
数码管显示器接口技术一、 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开始定义了一个一维数组
PIC 单片机的C 语言编程
PIC单片机C语言编程讲义奥科电子工作室(内部资料)2006年元月第一版第1章 PIC 单片机的C 语言编程1.1 PIC 单片机C 语言编程简介用C 语言来开发单片机系统软件最大的好处是编写代码效率高、软件调试直观、维护升级方便、代码的重复利用率高、便于跨平台的代码移植等等,因此C 语言编程在单片机系统设计中已得到越来越广泛的运用。
针对PIC 单片机的软件开发,同样可以用C 语言实现。
但在单片机上用C 语言写程序和在PC 机上写程序绝对不能简单等同。
现在的PC 机资源十分丰富,运算能力强大,因此程序员在写PC 机的应用程序时几乎不用关心编译后的可执行代码在运行过程中需要占用多少系统资源,也基本不用担心运行效率有多高。
写单片机的C 程序最关键的一点是单片机内的资源非常有限,控制的实时性要求又很高,因此,如果没有对单片机体系结构和硬件资源作详尽的了解,以笔者的愚见认为是无法写出高质量实用的C 语言程序。
这就是为什么前面所有章节中的的示范代码全部用基础的汇编指令实现的原因,希望籍此能使读者对PIC 单片机的指令体系和硬件资源有深入了解,在这基础之上再来讨论C 语言编程,就有水到渠成的感觉。
本讲稿围绕中档系列PIC 单片机来展开讨论,Microchip 公司自己没有针对中低档系列PIC单片机的C 语言编译器,但很多专业的第三方公司有众多支持PIC 单片机的C 语言编译器提供,常见的有Hitech、CCS、IAR、Bytecraft 等公司。
其中笔者最常用的是Hitech 公司的PICC 编译器,它稳定可靠,编译生成的代码效率高,在用PIC 单片机进行系统设计和开发的工程师群体中得到广泛认可。
其正式完全版软件需要购置,但在其网站上有限时的试用版供用户评估。
另外,Hitech 公司针对广大PIC 的业余爱好者和初学者还提供了完全免费的学习版PICC-Lite 编译器套件,它的使用方式和完全版相同,只是支持的PIC 单片机型号限制在PIC16F84、PIC16F877 和PIC16F628 等几款。
单片机实验 IO口的输入输出实验.
实验二 I/O口输入、输出实验一、实验目的1. 学习I/O口的使用方法。
2. 学习延时子程序、查表程序的编写和使用。
二、参考程序框图三、程序设计1、P0口循环点亮程序 ORG 0030HSTART : MOV P2,#00H; //消影 MOV A ,#01H; // LOOP : MOV P2 ,A; //点亮一个led 灯ACALL DELAY; //延时500ms RL A; //左移一位 AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序 DE1 : MOV R6,#200; DE2 : MOV R5,#123; DJNZ R5,$; DJNZ R6,DE2; DJNZ R7,DE1; RET END2、I/O口输入输出(方法一)ORG 0000H;START : MOV P2,#00H; //初始化 MOV P0,#00H;MOV P1,#0FFH; //p1口初始化给ffh 值 MOV DPTR,#TABLE; //表地址存入DPTR MOV 50H,#0FEH; //比较初值载入地址50h L0 :MOV A,P1; //按键消抖 CJNE A,#0FFH,L1; AJMP L0; L1 :MOV A,P1;CJNE A,#0FFH,LL1; AJMP L0;LL1 :CJNE A,50H,LL2; //是否与地址50h 中数据相等 MOV P0,A; //相等输出对应led 灯 MOV A,#00H; MOVC A,@A+DPTR;MOV P2,A; //输出表格数据到数码管 LCALL DELAY; //延时LJMP START; //返回程序开头 LL2 :XCH A,50H; //交换数据 RL A; //左移XCH A,50H; //再次交换,此时地址50h 中数据左移一位 INC DPTR; //表格数据地址加一 LJMP LL1; //返回继续比较DELAY : MOV R7,#01H; //延时程序 DE1 : MOV R6,#28H; DE2 : MOVR5,#5AH; DJNZ R5,$;DJNZ R7,DE1; RETTABLE : ;//DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据 END程序二(方法二)ORG 0000HMOV P2,#00H; //I./O口初始化 MOV P1,#0FFH; //P1口赋FFH 初值 MOVP0,#00H;START : MOV P2,#00H; //P2清0; MOV P0,#00H; //P0清0; MOV R1 ,P1;MOV A,R1; //读P1口CJNE A,#0FFH,L1; //是否有数据输入AJMP START; //无输入则跳转,继续查询 LCALL DELAY;L1 : MOV R1,P1; //消除按键抖动 MOV A,R1;CJNE A, #0FFH,LL1; AJMP START;LL1 : CJNE A,#0FEH,LL2; //是否按键1输入MOV P2,#06H; //是则P2输出相应的按键号码 CPL A; //A取反MOV P0,A; //输出到P0口 LCALL DELAY; //延迟AJMP LP; //跳转到LPLL2 : CJNE A,#0FDH,LL3; //是否按键2输入 MOV P2,#5BH; //以下同上 CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL3 : CJNE A,#0FBH,LL4; //判断按键3是否按下 MOV P2,#4FH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL4 : CJNE A,#0F7H,LL5; //判断按键4是否按下CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL5 : CJNE A,#0EFH,LL6; //判断按键5是否按下 MOV P2,#6DH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL6 : CJNE A,#0DFH,LL7; //判断按键6是否按下 MOV P2,#7DH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL7 : CJNE A,#0BFH,LL8; //判断按键7是否按下 MOV P2,#07H; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL8 : CJNE A,#7FH,LP; //判断按键8是否按下 MOV P2,#7FH; CPL A; MOVP0,A;LCALL DELAY;LP : AJMP START; //跳转回程序开头 DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H; DE2 : MOV R5,#5AH; DJNZ R5,$; DJNZ R6,DE2; DJNZR7,DE1; RET END四、思考题1、LED 循环方向更改:RL A; 改成 RR A;1S 的延时程序: DELAY : MOV R7,#20; //延时程序DE1 : MOV R6,#200; DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1; RET 2、提高电阻阻值3、一般为5V 或者3.3V 。
单片机练习题及例题【精选】
单片机课堂练习题/例题总结习题和思考题一1、一个完整的单片微机芯片内至少有哪些部件?2、根据程序存储器的差别单片机可以分为那些类型?3、单片机的主要特性是什么?它适宜于构成一个通用微机系统还是专用微机系统?为什么?习题与思考题二1、8051单片机内包含哪些主要逻辑功能部件?2、MCS-51单片机结构上有哪些主要特点?习题和思考题三1、详细描绘MCS-51单片机的存储器配置图。
2、MCS-51单片机是通过哪些方法将程序存储器和数据存储器严格分开的?3、什么是单片机的特殊功能寄存器?8051/8052各有几个特殊功能寄存器?这些特殊功能寄存器占有的地址范围?4、MCS—51单片机有哪些可直接寻址的位?5、什么是堆栈?8031的堆栈区可以设在什么地方?一般应设在什么区域?如何实现?试举例说明。
习题和思考题四1、试根据P1口和P3口的结构特性,指出它们作为输入口或第二功能输入/输出的条件。
2、MCS-51中无ROM型单片机在应用中P2口和P0口能否直接作为输入/输出连接开关、指示灯之类的外围设备?为什么?3、画出MCS-51系列单片机进行系统扩展时的三总线结构图。
课堂练习一1、8031有四个工作寄存器区,由PSW状态字中的RS1、RS0两位的状态来决定,单片机复位后,若执行SETB RS1 指令,此时只能使用()区的工作寄存器。
A、0区B、1区C、2区D、3区2. 09H位所在的单元地址是()A.02H B.21H C.08H D.20H3.单片机在进行取指令操作时,指令的地址是由()的内容决定。
A.SP B.PC C.DPTR D.PSEN和ALE4. P1口作输入用途之前必须( )。
A.外接高电平B.外接上拉电阻C.相应端口先置0 D.相应端口先置15.程序计数器PC用来( )。
A.存放指令B.存放上一条的指令地址C.存放下一条的指令地址D.存放正在执行的指令地址思考题1. 数123可能是( )。
A. 二进制数B. 八进制数C. 十六进制数D.四进制数 E.十进制数2. 8031单片机内部RAM包括( ) 。
pic复习123
1执行一条非转移类指令的真实时间答:pic单片机指令的执行过程遵循着一种全新的哈佛总线体系结构的原则,充分利用了计算机系统在程序存储器和数据存储器之间地址空间的相互独立性,取值过程和执行指令过程可以流水线操作同时进行。
因此,当PIC时钟频率为4MHZ时,执行一条非转移类指令需要4个系统时钟周期,即1微秒,但其指令执行的真实时间应为2微秒(在执行n-1条指令时取第n条指令,然后执行第n条指令)2哈佛总线结构的意义答:哈佛结构使得程序存储器和数据存储器的访问并行处理。
3、PIC单片机与的优点1。
精简指令集技术2。
哈佛总线结构 3.单字节指令 4.两级流水线结构 5.可一次性编程技术6. 其他优点(如功耗低、驱动能力强、片内A/D,片上看门狗,品种多便于选择)4、数据传送桥梁答:PIC的工作寄存器w5、PIC16F877的Flash程序存储器单元空间答:PIC的程序存储器是8KB*14字节的Flash存储器。
6、PIC16F877外围区域各端口的引脚数7、PIC16F877外围区域各端口的引脚数状态寄存器STATUS中各位的作用答:IRP——用于间接寻址的寄存器存储体选择位。
当D7=0时,选择存储体0和1,地址00H~FFh。
当D7=1时,选择存储体2和3.,地址是100H~1FFH(教材P23)8、间接寻址中的所采用的寄存器答:INDF,FSR9、PIC16F877的A/D转换器的特性1.各模拟通道共用一个转换电路2.逐次比较法,输出10位数字量 3 .参考电压可选10、RB端口中具有电压变化中断功能的引脚答:RB7:RB411、PIC16F877的并行口组成答:RD0:RD712、PIC16F877端口中具有模拟量输入通道的引脚答:8个。
RA0:RA3,和RE0:RE213、PIC16F877数据存储器中各“Bank”的单元地址答:Bank0:00H-7FH;bank1:80H-FFH,bank2:100H-17FHBank3:180H-1FFH14、PIC16F877程序存储器的单元地址范围答:000H-1FFFh15、PIC单片机的外围设备中断服务程序入口地址答:0004H16、PIC单片机系统时钟范围答:DC-20MHz17、调用子程序对程序计数器的影响答:执行CALL调用,PC断点地址就会被自动压入堆栈18、PCLATH对高8位程序指针的加载因素19、PIC16F877单片机采用的是硬件堆栈答:它配置了8级×13位堆栈区20、各指令对程序计数器PC的影响答:在顺序执行程序中,当PC内容送到地址总线后会自动加1,指向下一条将要运行的指令21、栈操作遵循的规则答:堆栈操作采用循环缓冲方式。
《单片机原理及应用》课后习题答案
《单片机原理及应用》课后习题答案第三章课后习题答案6.用指令实现下列数据传送:(1)R7内容传送到R4:MOV A,R7;MOV R4,A;(2)内部RAM20H单元送内部RAM40H;MOV 40H,20H(3)外部RAM20H单元内容送内部RAM30H: MOV R0,#20H;MOVX A,@R0;MOV 30H,A(4)ROM2000H单元内容送R2MOV DPTR,#2000HMOV A,#00HMOVC A,@A+DPTR;MOV R2,A(5)外部RAM3456H的内容送外部78HMOV DPTR,#3456HMOVX A,@DPTRMOV R0,#78HMOVX @R0,A(6)外部ROM2000H单元内容送外部RAM20H MOV DPTR,#2000HMOV A,#00HMOVC A,@A+DPTR;MOV R0,#20HMOVX @R0,A(7)外部RAM2040H单元内容与3040H内容交换MOV DPTR,#2040HMOVX A,@DPTRMOV R0,AMOV DPTR,#3040HMOVX A,@DPTRMOV R1,AMOV A,R0MOVX @DPTR,AMOV A,R1MOV DPTR,#2040HMOVX @DPTR,A(8)将片内数据存储器20H~23H单元内容传送到片外数据存储器3000H~3003HMOV A,20HMOV DPTR,#3000HMOVX @DPTR,AMOV A,21HMOV DPTR,#3001HMOVX @DPTR,AMOV A,22HMOV DPTR,#3002HMOVX @DPTR,AMOV A,23HMOV DPTR,#3003HMOVX @DPTR,AORG 0100HAJMP MAINMAIN: MOV R7,#04HMOV R0,#20HMOV DPTR,#3000HLOOP:MOV A,@R0 ;MOVX @DPTR,AINC R0 ;准备取下一个数INC DPTRDJNZ R7,LOOPEND7. 试用3种方法将累加器A中的无符号数乘2。
单片机课后习题及答案(1-13章)
《单片机原理及接口技术》(第2版)人民邮电出版社第1章单片机概述思考题及习题11.除了单片机这一名称之外,单片机还可称为和。
答:微控制器,嵌入式控制器.2.单片机与普通微型计算机的不同之处在于其将、、和三部分,通过内部连接在一起,集成于一块芯片上。
答:CPU、存储器、I/O口、总线3.在家用电器中使用单片机应属于微计算机的。
答: BA.辅助设计应用B.测量、控制应用C.数值计算应用D.数据处理应用4.微处理器、微计算机、微处理机、CPU、单片机、嵌入式处理器它们之间有何区别?答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不是计算机。
而微计算机、单片机它们都是一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。
5.AT89S51单片机相当于MCS-51系列单片机中的哪一型号的产品?“S”的含义是什么?答:相当于MCS-51系列中的87C51,只不过是AT89S51芯片内的4K字节Flash存储器取代了87C51片内的4K字节的EPROM。
6.什么是“嵌入式系统”? 系统中嵌入了单片机作为控制器,是否可称其为“嵌入式系统”? 答:广义上讲,凡是系统中嵌入了“嵌入式处理器”,如单片机、DSP、嵌入式微处理器,都称其为“嵌入式系统”。
但多数人把“嵌入”嵌入式微处理器的系统,称为“嵌入式系统”。
目前“嵌入式系统”还没有一个严格和权威的定义。
目前人们所说的“嵌入式系统”,多指后者。
7.嵌入式处理器家族中的单片机、DSP、嵌入式微处理器各有何特点?它们的应用领域有何不同?答:单片机体积小、价格低且易于掌握和普及,很容易嵌入到各种通用目的的系统中,实现各种方式的检测和控制。
单片机在嵌入式处理器市场占有率最高,最大特点是价格低,体积小,应用广泛。
DSP是一种非常擅长于高速实现各种数字信号处理运算(如数字滤波、FFT、频谱分析等)的嵌入式处理器。
能够高速完成各种复杂的数字信号处理算法。
单片机时钟1234滚动程序代码
单片机时钟1234滚动程序代码单片机时钟1234滚动程序代码在单片机中,可以使用数字显示器来显示时钟。
而对于时钟的滚动显示,可以通过不断改变数字的显示值来实现。
以下是一个使用C 语言编写的单片机时钟1234滚动程序的代码示例:```c#include <reg52.h> // 引入单片机的头文件sbit D1 = P2^0; // 数字位选择引脚1sbit D2 = P2^1; // 数字位选择引脚2sbit D3 = P2^2; // 数字位选择引脚3sbit D4 = P2^3; // 数字位选择引脚4unsigned char code LED_Disp[] = { // 数码管显示0-9的编码值 0x3F, // 00x06, // 10x5B, // 20x4F, // 30x66, // 40x6D, // 50x7D, // 60x07, // 70x7F, // 80x6F // 9};void delay(unsigned int t) { // 延时函数unsigned int i, j;for (i = t; i > 0; i--)for (j = 110; j > 0; j--);}void main() {unsigned char i = 0;while (1) {D1 = 1; // 选择第一个数码管P0 = LED_Disp[i % 10]; // 显示个位数字delay(5); // 延时D1 = 0; // 关闭选择D2 = 1; // 选择第二个数码管P0 = LED_Disp[i / 10 % 10]; // 显示十位数字delay(5); // 延时D2 = 0; // 关闭选择D3 = 1; // 选择第三个数码管P0 = LED_Disp[i / 100 % 10]; // 显示百位数字delay(5); // 延时D3 = 0; // 关闭选择D4 = 1; // 选择第四个数码管P0 = LED_Disp[i / 1000 % 10]; // 显示千位数字delay(5); // 延时D4 = 0; // 关闭选择i++; // 数字递增if (i >= 10000)i = 0; // 重新计数}}```这段代码中,我们通过控制四个数码管的选择引脚,以及通过改变P0口的输出值来实现数字的显示。
公交报站系统设计123
摘要根据STC89C51单片机的特点和公交车报站的需求,本文提出了一种用单片机控制语音芯片进行公交车语音自动报站的方法。
同时给出了软硬件设计的方法,设计过程中包括硬件电路设计和软件程序编写两个方面,解释了单片机在应用过程中的方法和可能出现的问题。
本文主要介绍硬件电路设计部分。
利用STC89C51作为CPU进行总体控制,通过ISD4004语音芯片建立语音信息库,对语音信息进行自由组合,形成变化多样的语音信息,同时运用LCD 液晶显示屏进行站名显示。
当公交车到达某站点,用按键控制本系统工作,通过语音电路输出语音信息和提示。
用户可以自行录制对应的站名,当工作在报站模式的时候,系统通过检测红外检测模块判断是否到达站点,检测到达站点则自动报出站名。
关键词:STC89C51;ISD4004;LCD显示管;公交车报站;AbstractAccording to the characteristics and needs of STC89C51 microcontroller bus stat ions, this paper proposes a method to control voice chip MCU voice automatically rep orts the bus station. At the same time gives the hardware and software design methods , design process, including hardware design and software programming are two aspect s of the SCM method explained in the application process and the problems that may arise. This paper describes the hardware design section.STC89C51 as CPU utilization overall control, voice information database establish ed by ISD4004 voice chip, voice information to be freely combined to form diverse v oice information while using the LCD monitor to the station name display. When the bus arrived at a site, use the button to control this system work, through the voice circ uit output voice messages and prompts. Users can record their own corresponding stat ion name, while working at the newspaper stand mode, the system determines whethe r the module by detecting the infrared detector to reach the site, the site will automatic ally detect arrival station names reported.Key words: STC89C51; ISD4004; LCD display tube; bus stations目录第1章概述 (1)1.1 课题研究背景、目的和意义 (1)1.2 研究概况及发展趋势 (2)1.3 本系统主要研究内容 (2)第2章总体方案论证与设计 (3)2.1主控模块的选型和论证 (3)2.2显示模块的选型和论证 (3)2.3语音模块的选型和论证 (4)2.4功率放大模块的选型和论证 (4)2.5系统整体设计概述 (4)第3章系统硬件设计 (6)3.1主控模块 (6)3.2 LCD液晶显示器简介 (10)3.3键盘模块设计 (12)3.4语音存储模块设计 (13)3.5功率放大模块设计 (16)3.6红外检测模块设计 (17)第4章系统软件设计 (20)4.1 系统总流程框 (20)4.2 液晶显示流程图 (20)4.3 程序设计原理 (21)第5章系统调试和结果展示 (22)5.1 电路的焊接 (22)5.2 程序设计编译环境 (23)5.3 程序烧录 (26)结论 (28)参考文献 (29)致谢 (30)附录1 硬件原理图 (31)附录2 硬件原理图 (32)附录3 程序 (33)第1章概述1.1 课题研究背景、目的和意义当今社会环境污染问题越来越严重,每年的4月22日为世界地球日,每年的6月5日为世界环境日,可见人类对环境污染问题越来越重视。
单片机延时子程序
精确延时计算公式:延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5;延时5秒左右DELAY5S:PUSH 04H;2个机器周期PUSH 05H;2个机器周期PUSH 06H;2个机器周期MOV R4,#50;1个机器周期DELAY5S_0:MOV R5,#200;1个机器周期DELAY5S_1:MOV R6,#245;1个机器周期DJNZ R6,$;2×245=490个机器周期DJNZ R5,DELAY5S_1;这条2个机器周期,这层循环包含R5×(490+1)+2×R5=98600个机器周期DJNZ R4,DELAY5S_0;这条2个机器周期,这层循环包含R4×(98600+1)+2×R4=4930150个机器周期POP 06H;2个机器周期POP 05H;2个机器周期POP 04H;2个机器周期RET;2个机器周期;(共2+2+2+1+4930150+2+2+2+2=4930165个机器周期);513微秒延时程序DELAY: MOV R2,#0FEH;1个机器周期JUZINAIYOU: DJNZ R2,JUZINAIYOU;2×R21即2×245RET;2个机器周期;(实际上是493个机器周期);10毫秒延时程序DL10MS: MOV R3,#14HDL10MS1:LCALL DELAYDJNZ R3,DL10MS1RET;(缺DELAY);0.1s延时程序12MHzDELAY: MOV R6,#250DL1: MOV R7,#200DL2: DJNZ R6,DL2DJNZ R7,DL1RET;延时1046549微秒(12MHz);具体的计算公式是:;((((r7*2+1)+2)*r6+1)+2)*r5+1+4 = ((r7*2+3)*r6+3)*r5+5 DEL : MOV R5,#08HDEL1: MOV R6,#0FFHDEL2: MOV R7,#0FFHDJNZ R7,$DJNZ R6,DEL2DJNZ R5,DEL1RET;1秒延时子程序是以12MHz晶振Delay1S:mov r1,#50del0: mov r2,#91del1: mov r3,#100djnz r3,$djnz r2,del1djnz r1,del0Ret;1秒延时子程序是以12MHz晶振为例算指令周期耗时KK: MOV R5,#10 ;1指令周期×1K1: MOV R6,#0FFH ;1指令周期×10K2: MOV R7,#80H ;1指令周期256×10=2560K3: NOP ;1指令周期;128*256*10=327680DJNZ R7,K3 ;2指令周期2*128*256*10=655360DJNZ R6,K2 ;2指令周期2*256*10=5120DJNZ R5,K1 ;2指令周期2*10=20RET;2指令周期;21+10+2560+327680+655360+5120+20+2=990753;约等于1秒=1000000微秒;这个算下来也只有0.998抄T_0: MOV R7,#10;D1: MOV R6,#200;D2: MOV R5,#248;DJNZ R5,$DJNZ R6,D2;DJNZ R7,D1;RET;这样算下来应该是1.000011秒T_0: MOV R7,#10;D1: MOV R6,#200;D2: NOPMOV R5,#248;DJNZ R5,$DJNZ R6,D2;DJNZ R7,D1;RETDELAY_2S: ;10MS(11.0592mhz)MOV R3,#200JMP DELAY10MSDELAY_100MS: ;100MS(11.0592mhz) MOV R3,#10JMP DELAY10MSDELAY_10MS:MOV R3,#1DELAY10MS: ;去抖动10MS(11.0592mhz)MOV R4,#20DELAY10MSA:MOV R5,#247DJNZ R5,$DJNZ R4,DELAY10MSADJNZ R3,DELAY10MSRETDELAY_500MS: ;500MS MOV R2,#208JMP DELAY_MSDELAY_175MS: ;175MSMOV R2,#73JMP DELAY_MSdelaY_120MS: ;120MSMOV R2,#50JMP DELAY_MSdelay_60ms: ;60msMOV R2,#25JMP DELAY_MSdelay_30ms: ;30msMOV R2,#12JMP DELAY_MSDELAY_5MS: ;5MSMOV R2,#2;=================================== DELAY_MS:CALL DELAY2400DJNZ R2,DELAY_MSRET;=================================== DELAY2400: ;10x244+4=2447 /1.024=2390 MOV R0,#244 ;1DELAY24001:MUL AB ;4MUL AB ;4DJNZ R0,DELAY24001 ;2RETDELAY: ;延时子程序(1秒)MOV R0,#0AHDELAY1: MOV R1,#00HJUZINAIYOU: MOV R2,#0B2HDJNZ R2,$DJNZ R1,JUZINAIYOUDJNZ R0,DELAY1RETMOV R2,#10 ;延时1秒LCALL DELAYMOV R2,#50 ;延时5秒LCALL DELAYDELAY: ;延时子程序PUSH R2PUSH R1PUSH R0DELAY1: MOV R1,#00HJUZINAIYOU: MOV R0,#0B2HDJNZ R0,$DJNZ R1,JUZINAIYOU ;延时100 mSDJNZ R2,DELAY1POP R0POP R1POP R2RET1:DEL: MOV R7, #200DEL1: MOV R6, #123NOPDEL2: DJNZ R6, DEL2DJNZ R7, DEL1RET是50.001ms 算法是:0.001ms+200*0.001ms+200*0.001ms+200*123*0.002ms+200*0.002ms ;(123*2+4)*200+12: DEL: MOV R7, #200DEL1: MOV R6, #123DEL2:NOPDJNZ R6,DEL2DJNZ R7,DEL1RETD500MS:PUSH PSWSETB RS0MOV R7,#200D51: MOV R6,#250D52: NOPNOPNOPNOPDJNZ R6,D52DJNZ R7,D51POP PSWRETDELAY: ;延时1毫秒PUSH PSWSETB RS0MOV R7,#50D1: MOV R6,#10D2: DJNZ R6,$DJNZ R7,D1POP PSWRETORG 0LJMP MAINORG 000BHLJMP CTC0MAIN: MOV SP, #50HCLR EAMOV TMOD, #01HMOV TH0,#3CHMOV TL0,#0B0HMOV R4, #10SETB ET0SETB EASETB TR0SJMP $ ;CTC0: MOV TH0, #3CHMOV TL0, #0B0HDJNZ R4, LPCPL P1.0MOV R4, #10LP: RETIEND; 定时器中断延时TMOD=0x01; /*定时器0工作在模式1下(16位计数器)*/TH0=0xfd;TL0=0x83;TR0=1; /*启动定时器*/TF0==0;TR0=0;等待中断;100ms定时,11.0592晶振他定时准确啊又不影响程序运行2008-06-10 13:50:46 来源:来于网络,服务大家作者:未知【大中小】点击:9 次下面几个是单片机的延时程序(包括asm和C程序,都是我在学单片机的过程中用到的),在单片机延时程序中应考虑所使用的晶振的频率,在51系列的单片机中我们常用的是11.0592MHz和12.0000MHz的晶振,而在A VR单片机上常用的有8.000MHz和4.000MH的晶振所以在网上查找程序时如果涉及到精确延时则应该注意晶振的频率是多大。
单片机习题答案解析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.说明下列指令中源操作数采用的寻址方式。
单片机123456789
第二章89C51的CPU 由运算器和控制器所构成,算术逻辑运算单元ALU进行算术、逻辑运算,还具有位操作功能累加器A 使用最频繁的寄存器,可写为Acc。
A的作用(1)是ALU的输入之一,又是运算结果的存放单元。
(2)数据传送大多都通过累加器A。
MCS-51增加了一部分可以不经过累加器的传送指令,即可加快数据的传送速度,又减少A的“瓶颈堵塞”现象。
A的进位标志Cy同时又是位处理机的位累加器。
(1)Cy(PSW.7)进位标志位(2)Ac(PSW.6) 辅助进位标志位,用于BCD码的十进制调整运算(3)F0(PSW.5)用户使用的状态标志位。
(4)RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制位1和位0。
RS1 RS0所选的4组寄存器0区(内部RAM地址00H~07H)1区(内部RAM 地址08H~0FH)2区(内部RAM地址10H~17H)3区(内部RAM地址18H~1FH)(5)OV(PSW.2)溢出标志位指示运算是否溢出。
注意各种算术运算指令对该位的影响(6)PSW.1位: 保留位,未用(7)P(PSW.0)奇偶标志位P=1,A中―1‖的个数为奇数P=0,A 中―1‖的个数为偶数控制器1.程序计数器PC存放下一条要执行的指令在程序存储器中的地址。
基本工作方式有以下几种:(1)程序计数器自动加1 (2)执行有条件转移或无条件转移指令时,PC将被置入新的数值,从而使程序的流向发生变化。
(3)执行子程序调用或中断调用,完成下列操作:①PC的现行值保护②将子程序入口地址或中断向量的地址送入PC。
存储器空间可划分为5类:1.程序存储器空间片内程序存储器为4KB 的Flash 存储器 2.片内数据存储器空间:128B 3.特殊功能寄存器SFR-Special Function Register4.位地址空间: 211个可寻址位。
5.外部数据寄存器空间:片外可扩展64K字节RAM。
程序存储器存放应用程序和表格之类的固定常数。
- 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突然发。