单片机电子时钟汇编语言程序
第三章MCS51单片机的指令系统和汇编语言程序示例(第5.
第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节)1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1)MOV A,#19HADD A,#66H(2)MOV A,#5AHADD A,#6BH2.已知:A=85H,R0=30H,(30H)=11H, (31H)=0FFH,C=1,试计算单片机执行下列指令后累加器A和C中的值各是多少?(1)ADDC A,R0, (2)ADDC A,31H(3) ADDC A,@R0, (4) ADDC A,#85H3.已知M1和M2中分别存放两个16位无符号数的低8位,M1+1和M2+1中分别存放两个16位无符号数的高8位,计算两数之和(低8位存放在M1,高8位存放在M1+1,设两数之和不超过16位)。
4.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?CLR CMOV A,#52HSUBB A,#0B4H5.已知:A=0DFH,R1=40H,R7=19H,(30H)=00H,(40H)=0FFH,试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1) DEC A (2) DEC R7 (3) DEC 30H (4) DEC @R16.试写出能完成85+59的BCD加法程序,并对工作过程进行分析。
7.已知:两个8位无符号乘数分别放在30H和31H单元中,编程实现他们乘积的低8位存放在32H,高8位存放在33H。
8.已知:R0=30H,(30H)=0AAH,试分析执行下列指令后累加器A和30H单元的内容是什么?(1)MOV A, #0FFH ANL A, R0(2)MOV A, #0FH ANL A, 30H(3)MOV A, #0F0H ANL A, @R0(4)MOV A, #80H ANL 30H, A9.设:A=0AAH和P1=0FFH,试编程把累加器A的低四位送入P1口的低四位,P1口的高四位保持不变。
毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]
程序仿真等全套设计,联系153893706第1章绪论二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。
第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。
第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。
第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步……我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。
商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。
本设计为软件,硬件相结合的一组设计。
在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。
基本的要了解一些主要器件的基本功能和作用。
除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。
AT89C52是由ATMEL公司推出的一种小型单片机。
95年出现在中国市场。
其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。
本文介绍了基于AT89C52单片机设计的电子万年历。
选题背景及研究的目的与意义设计的目的电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。
MCS-51系列单片机的指令系统和汇编语言程序
3·1 汇编指令第3 章MCS 一51 系列单片机的指令系统和汇编语言程序3·1·1 请说明机器语言、汇编语言、高级语言三者的主要区分,进一步说明为什么这三种语言缺一不行。
3·1·2 请总结:(1)汇编语言程序的优缺点和适用场合。
(2)学习微机原理课程时,为什么肯定要学汇编语言程序?3·1·3MCS 一51 系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象与寻址范围。
3·1·4 要访问片内RAM,可有哪几种寻址方式?3·1·5 要访问片外RAM,有哪几种寻址方式?3·1·6 要访问ROM,又有哪几种寻址方式?3·1·7 试按寻址方式对MCS 一51 系列单片机的各指令重进展归类(一般依据源操作数寻址方式归类,程序转移类指令例外)。
3·1·8 试分别针对51 子系列与52 子系列,说明MOV A,direct 指令与MOV A,@Rj 指令的访问范围。
3·1·9 传送类指令中哪几个小类是访问RAM 的?哪几个小类是访问ROM 的?为什么访问ROM 的指令那么少?CPU 访问ROM 多不多?什么时候需要访问ROM?3·1·10 试绘图示明MCS 一51 系列单片机数据传送类指令可满足的各种传送关系。
3·1·11 请选用指令,分别到达以下操作: (1)将累加器内容送工作存放器R6.(2)将累加器内容送片内RAM 的7BH 单元。
(3)将累加器内容送片外RAM 的7BH 单元。
(4)将累加器内容送片外RAM 的007BH 单元。
(5)将ROM007BH 单元内容送累加器。
3·1·12 区分以下指令的不同功能:(l)MOV A,#24H 与MOV A.24H(2)MOV A,R0 与MOV A,@R0(3)MOV A,@R0 与MOVX A,@R03·1·13 设片内RAM 30H 单元的内容为40H;片内RAM 40H 单元的内容为l0H;片内RAM l0H 单元的内容为00H;(Pl)=0CAH。
单片机课程设计电子时钟
单片机课程设计电子时钟一、课程目标知识目标:1. 让学生理解单片机的基本原理和编程方法,掌握单片机在电子时钟设计中的应用。
2. 使学生掌握电子时钟的组成和工作原理,包括时、分、秒的显示与计时功能。
3. 帮助学生了解电子时钟设计中涉及的硬件知识,如晶振、计数器、显示器件等。
技能目标:1. 培养学生运用单片机编程实现电子时钟功能的能力,提高学生的动手实践能力。
2. 培养学生分析问题、解决问题的能力,能够针对电子时钟设计过程中遇到的问题进行调试和优化。
3. 培养学生团队协作能力,通过分组合作完成课程设计任务。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养学生主动学习的积极性。
2. 培养学生严谨的科学态度,注重实验数据的真实性,养成良好的实验习惯。
3. 增强学生的创新意识,鼓励学生在课程设计中发挥想象力和创造力,提高学生的创新能力。
课程性质:本课程为实践性课程,注重培养学生的动手能力和实际应用能力。
学生特点:学生已具备一定的单片机基础知识和编程技能,对电子制作有较高的兴趣。
教学要求:结合课本内容,注重理论与实践相结合,通过课程设计提高学生的综合应用能力。
将课程目标分解为具体的学习成果,以便在教学设计和评估过程中有针对性地指导学生。
二、教学内容1. 理论知识:- 单片机原理与编程:复习课本第三章内容,重点掌握单片机的内部结构、工作原理、指令系统及编程方法。
- 电子时钟原理:学习课本第四章关于时钟电路的设计,了解时、分、秒的计数原理及显示技术。
2. 实践操作:- 硬件设计:根据课本第五章内容,选用51单片机及相关元器件,设计电子时钟的硬件电路,包括晶振、计数器、显示器件等。
- 软件编程:运用C语言或汇编语言,编写电子时钟的程序代码,实现时、分、秒的显示与计时功能。
3. 教学大纲:- 第一周:复习单片机基础知识,讲解电子时钟原理,分配课程设计任务。
- 第二周:进行硬件电路设计,学习并选用合适的元器件,绘制原理图。
单片机课程设计报告--电子时钟(2021整理)
一、设计内容该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。
设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。
二、电子时钟设计思想:用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY〔自己计算〕。
形成定时时间为50ms。
用片内RAM的7BH单元对50ms 计数,计20次产生秒计数器78H单元加1,秒计数器加到60那么分计数器79H单元加1,分计数器加到60那么时计数器7AH单元加1,时计数器加到24那么时计数器清0。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。
在处理过程中加上了按键判断程序,能对按键处理。
三、MCS-51单片机系统简介单片机应用系统由硬件系统和软件系统两局部组成。
硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。
软件系统包括监控程序和各种应用程序。
在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。
与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。
在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。
在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。
配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED 指示灯就可以进行处理了。
在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。
显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器。
大学课件MCS51单片机指令系统与汇编语言程序设计
ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。
单片机汇编语言程序设计实验报告
单片机实验1 汇编语言程序设计实验---- 存储器块赋值一.实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二.实验内容指定存储器中某块的起始地址和长度,要求将其内容赋值。
例如将4000H 开始的100个字节内容清零或全部赋值为33H(参考程序),要求根据参考程序修改:修改程序,赋值内容为(10,9,8,7,6,5,4,3,2,1。
)三.实验仪器微机、VW,WAVE6000编程环境软件,(单片机实验箱)仿真器--仿真器设置-选择仿真器选择仿真头选择CPU Lab8000/Lab6000通用微控制器 MCS51实验 8051前3个软件实验勾选√使用伟福软件模拟器四实验步骤注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
编译器默认设置:程序框图参考例程序:Block equ 4000hmov dptr, #Block ; 起始地址mov r0, #10 ; 清10个字节mov a, #33h ; 将33H赋值给aLoop:movx @dptr, a 将a写入外部RAMinc dptr ; 指向下一个地址djnz r0, Loop ; 记数减一ljmp $ ; $当前程序指针相当于一直执行自己;ljmp $ end说明:$:是当前语句的程序指针(地址)相当于一直执行自己:ljmp $,程序死循环要求赋值数据为10,9,8,7,6,5,4,3,2,1则以上程序该如何改动? 自己修改程序实现。
基于C51单片机的数字时钟课程设计(C语言带闹钟)
单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。
具有时间显示,并有时间设定,时间调整功能。
1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。
1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。
键盘采用动态扫描方式。
利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
第4章 单片机汇编语言程序设计
RO 20HBCMDH BCDL
SWAP A ORL A, #30H MOV 21H, A SJMP $
;BCDH数送A的低4位 21 0011
;完成转换 @R0 ;存数
H22HB0C001D0HBCD 01000L
END
回目录 上页 下页
方法1小结:
以上程序用了8条指令,15个内存字节,执行时间为9个 机器周期。
21 0011BCDH H22H0011BCDL
回目录 上页 下页
程序:
ORG 1000H
MOV R0, #22H ;R0 22H MOV @R0,#0 ; 22H 0 MOV A, 20H ;两个BCD数送A
A
B00C01D01H0BB0CC0D0DHL
XCHD A, @R0 ;BCDL数送22H ORL 22H, #30H ;完成转换
例4-7:设30H单元存放的是一元二次方程ax2+bx+c = 0
根的判别式△= b2 – 4ac的值。
试根据30H单元的值,编写程序,
判断方程根的三种情况。
在31H中存放“0”代表无实根,
存放“1”代表有相同的实根,
存放“2”代表两个不同的实根。
解:△为有符号数,有三种情况,这是一多重分支程序
即小于零,等于零、大于零。
R3
R2
回目录 上页 下页
程序:
ORG 1000H CLR C CLR A SUBB A, R0 MOV R2, A CLR A
SUBB A, R1 MOV R3 , A SJMP $ END
;CY 0
;A 0
;低字节求补
;送R2
;A清零 R3 0000
;高字节求补 0000
基于52单片机电子时钟的设计论文(纯汇编语言编写)
编号单片机课程设计(2013 级)题目:基于52单片机电子时钟的设计学院:物理与机电工程学院专业:电子信息科学与技术作者姓名:陈✘✘党✘✘杜✘✘指导教师:张✘✘职称:教授完成日期:2016 年7 月 2 日二〇一六年七月基于52单片机电子时钟的设计摘要本次设计的多功能时钟系统采用STC89C52单片机为核心器件,利用其定时器/计数器定时和记数的原理,结合液晶显示电路、时钟芯片DS1302电路、电源电路以及按键电路来设计计时器。
将软硬件有机地结合起来,使得系统能够实现液晶显示,显示有年、月、日、时、分、秒以及星期,还可以设置闹钟和整点报时。
其中软件系统采用单片机汇编语言编写程序,包括显示程序、闹钟程序、中断、延时程序,按键消抖程序等,并在keil中调试运行,硬件系统利用PROTEUS 强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。
关键词:STC89C52芯片;时钟芯片DS1302;单片机汇编语言;液晶显示电路1 设计任务及要求分析1.1 设计任务:基于单片机的电子时钟设计1.2 要求:1.2.1 用LCD液晶作为显示设备1.2.2 可以分别设定小时、分钟和秒,复位后时间为 00 00 001.2.3 能实现日期的设置年、月、日1.3 扩展要求:如闹钟功能、显示星期、整点音乐报时等2 系统方案2.1 系统整体方案的论证电路原理设计是基于小系统板包括电源电路、复位电路、按键电路、DS1302时钟电路、液晶显示驱动电路、输出控制电路。
电源部分是用电池来提供的3v-5v,晶体振荡器采用的是12MHz的石英晶体振荡器。
整个系统用单片机为中央控制器,由单片机执行采集时钟芯片的时间信号并通过显示模块来输出信号及相关的控制功能。
时钟芯片产生时钟信号,利用单片机的I/O口传给单片机;并通过I/O口实现LCD的显示。
系统设有4个独立式按键可以对时间年、月、日和星期进行调整,还可以设置闹钟。
具体如图2.1所示:图2.1 系统整体框图3硬件设计与实现3.1单片机最小系统STC89C52是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。
51单片机汇编语言程序设计
单片机原理与接口技术
中北大学电子科学技术专业
返回目录
8
4.1.3 汇编语言的规范
2.伪指令
---伪指令 伪指令ORG 伪指令
MCS-51系列单片机的常用伪指令有 ORG、 MCS-51系列单片机的常用伪指令有:ORG、 系列单片机的常用伪指令有: END、EQU、DB、DW、DS和BIT等 END、EQU、DB、DW、DS和BIT等。
23:24
单片机原理与接口技术
中北大学电子科学技术专业
返回目录
9
4.1.3 汇编语言的规范
(2)汇编结束伪指令END 汇编结束伪指令END
格式:[标号:] 格式: 标号:] END [表达式] [表达式 表达式]
---伪指令 伪指令END 伪指令
功能:结束汇编。汇编程序遇到END伪指令后即结束汇 功能:结束汇编。汇编程序遇到END伪指令后即结束汇 编。处于END之后的程序,汇编程序不予处理。 处于END之后的程序 汇编程序不予处理。 之后的程序, ORG 2000H 如: START: MOV A, #00H … END START ;表示标号START开始的程序段结束。 表示标号START开始的程序段结束 开始的程序段结束。
以上伪指令经汇编以后, 以上伪指令经汇编以后,将从 1010H开始的若干内存单元赋值。 1010H开始的若干内存单元赋值。 开始的若干内存单元赋值
23:24
单片机原理与接口技术
中北大学电子科学技术专业
返回目录
12
4.1.3 汇编语言的规范
(5)定义字伪指令 )定义字伪指令DW
[标号:] 标号: DW 16位二进制数表 16位二进制数表
(7)位定义伪指令BIT 位定义伪指令BIT
单片机汇编语言程序设计
6.定义空间指令DS
指令格式:
地址
ROM
[标号:]DS <表达式>
2000H
说明:DS伪指令是定义存储区,即从标
2001H 号指定的单元开始保留表达式所代表的
存储单元数。
2002H
【例】
2003H
ORG 2000H
单片机汇编语言程序设计
单片机汇编语言程序设计
1.1 源程序的编辑与汇编
1.源程序的编辑 源程序的编写要依据80C51汇编语言的基本规则,特别要用好常用
的汇编命令(即伪指令),例如: ORG 0040H MOV A,#7FH MOV R1,#44H END
这里的ORG和END是两条伪指令,其作用是告诉汇编程序此汇编源程 序的起止位置。编辑好的源程序应以.ASM扩展名存盘,以备汇编程序调 用。
这里使用的“字符名称”不是标号,不能用“:”来隔分隔符;其 中的“项”可以是一个数值,也可以是一个已经有定义的名字或可以求 值的表达式。该指令的功能是将一个数或特定的汇编符号赋予规定的字 符名称。用EQU指令赋值的字符名称可以用做数据地址、代码地址、位 地址或直接当做一个立即数使用。因此,给字符名称所赋的值可以是8 位二进制数,也可以是16位二进制数。
置循环初值
置循环初值
循环体
N 循环条件? Y
循环条件? Y
N 循环体
(a)先处理后判断方式
(b)先判断后处理方式
4.子程序结构 在汇编语言程序设计时,通过循环程序可以解决连续重复执行同
一程序段的问题,而对于不连续重复执行同一程序段的问题,为避免 重复编制程序,节省程序代码所占的存储空间,可将其编制成独立的 程序即子程序,在需要的位置采用特定的指令调用该子程序,执行后 再返回到调用位置继续执行后序程序指令。子程序调用是实现I/O操 作的重要方法。
单片机汇编语言程序设计
4.1.2 汇编语言源程序的设计步骤 汇编语言源程序的设计过程的一般步 骤是: 分析任务 当我们要编写某个功能的应用程序时, 首先应该详细分析给定的任务。明确 哪些是任务所提供的基本条件,哪些 是任务要解决的具体问题,哪些是任 务所期望的最终目标。
4.1.2 汇编语言源程序的设计步骤
确定算法 任务明确之后,下一步就是确定解决问题的 方法。将给定的任务转换成计算机处理模式, 即通常所说的算法。对于较复杂的任务,需 要先用数学方法把问题抽象出来。往往同一 个数学表达式可以用多种算法实现,我们应 综合考虑寻找出其中的最佳方案,使程序所 占内存小,运行时间短。 画程序流程图 画流程图是把所采用的算法转换为汇编语言 语言程序的准备阶段,选择合适的程序结构, 把整个任务细化成若干个小的功能,使每个 小功能只对应几条语句。
4.3.1 顺序程序设计 【例4-6】
程序清单之二(采用DPTR当基址寄存器):
【例4-5】将片内RAM 30H的中间4位,31H的 低2位,32H的高2位按序拼成一个新字节,存 入33H单元。 分析:需要灵活掌握逻辑操作指令,对存储单 元的所需位进行保留,并移到字节中正确位置, 最后将相应位合并在一个字节。 ORG 0000H LJMP START ORG 0100H START: MOV A,30H ANL A,#3CH ;保留30H的中间4位原值,
4.2 汇编语言伪指令
8、BIT 位地址符号伪指令 格式:字符名称 BIT 位地址 功能:用规定的字符名称表示位地址。 例如: X0 BIT P1.0 X1 BIT 30H 经汇编后,P1口的第0位地址赋给X0, 位地址30H赋给X1。在程序中可以分别 用X0、X1代替P1.0和位地址30H。
4.3 简单程序设计
单片机 电子时钟实验报告
电子时钟设计实验报告姓名:学号:班级:指导老师:一、实验基本要求利用定时计数器,设计一个电子时钟,使用前面使用过的显示子程序。
从左到右依次显示时分秒。
有两种方法实现,一种是在中断程序中计数,产生时分秒计数,送显示缓冲区。
另一种是中断程序每一秒清除一个位变量,而主程序通过监视位变量的变化来知道每秒的时间。
进而要求:1.加入时间调整程序,使用两个或三个按钮,调节当前的时间。
类似平常使用的电子表。
可以让正在调整的位闪烁显示。
2.可以加入一个闹钟钟设置,当所定的时间到时,产生断续的蜂鸣声。
可以加入日历的功能。
二、最终实现的功能1、日历(年、月、日)显示与数值的修改2、时钟(时分秒)显示及数值的修改3、闹钟设定及数值的修改、到时响铃4、秒表计时及秒表重置三、设计核心思想程序设计中设置定时器0作为基本时钟,中断每50ms进入一次,每20次中断即1秒,秒加一,在中断服务程序中执行60秒进位、60分进位。
通过独立式键盘,进行各项数值调整、定时器开启和暂停以及重置。
各个功能在分立的子函数中实现,在主函数中进行调用,结构清晰。
四、设计亮点1、按键功能通过“按下时间的长短”丰富在按键消抖结束后,再次判断按键按下的同时,记录按下时间的长短。
短按实现数值的修改、计时暂停及启动,长按实现模式的切换和重置。
2、闹铃设置为一段音乐通过查阅网上资料,将蜂鸣器的响声富有变化,从而实现一段有旋律的音乐。
3、函数独立设计的程序中包含以下函数模块:延时、初始化、时间(日历、闹钟)显示、键盘扫描、秒表显示、定时器0中断函数(时钟)、定时器1中断(秒表)、音乐、闹钟及主函数。
4、各功能的实现采用模块化处理模式1:时钟显示;模式2:日历显示;模式3:秒表显示;模式4:闹钟显示。
五、实验中的问题总结LED数码管显示部分小结:(1)要设置段选(P2.6)和位选(P2.7)。
(2)段选和位选需按照书上讲的逻辑编写。
虽然P0口作为段选,P2口作为位选,但是程序设计中位选时要将值赋给P0口(打开位选→赋位选→关闭位选)。
基于单片机C语言电子时钟完整版(闹钟,整点报时)
《单片机技术》课程设计说明书数字电子钟系、部:电气与信息工程学院学生姓名:指导教师:职称专业:班级:完成时间:2013-06-07摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEU5键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词电子钟;AT89S52;硬件设计;软件设计ABSTRACTClock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value.Key words Electronic clock;;AT89S52;Hardware Design;Software Design目录1设计课题任务、功能要求说明及方案介绍 (1)1.1设计课题任务 (1)1.2功能要求说明 (1)1.3设计总体方案介绍及原理说明 (1)2设计课题硬件系统的设计 (2)2.1设计课题硬件系统各模块功能简要介绍 (2)2.2设计课题电路原理图、PCB图、元器件布局图 (2)2.3设计课题元器件清单 (5)3设计课题软件系统的设计 (6)3.1设计课题使用单片机资源的情况 (6)3.2设计课题软件系统各模块功能简要介绍 (6)3.3设计课题软件系统程序流程框图 (6)3.4设计课题软件系统程序清单 (10)4设计结论、仿真结果、误差分析、教学建议 (21)4.1设计课题的设计结论及使用说明 (21)4.2设计课题的仿真结果 (21)4.3设计课题的误差分析 (22)4.4设计体会 (22)4.5教学建议 (22)结束语 (23)参考文献 (24)致谢 (25)附录 (26)1 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。
电子实时时钟万年日历系统-单片机课程设计(含电路图、流程图、PCB图、汇编语言)
摘要围绕电子钟系统的设计与开发工作进行研究和实践,详细介绍了电子钟系统的整体结构、硬件设计、软件设计,系统方案以及其的开发和具体实现。
介绍一种基于在系统可编程技术和C51编译器配有集成开发的新型电子钟的设计方法,阐述了其工作原理和软硬件设计。
在硬件上,用KEIL公司的C51大规模集成芯片对其外围电路进行集成,用1片8051实现了几十片分离元件才能实现的功能,几乎将整个系统下载于同一芯片中,实现了所谓的片上系统,从而大大简化了系统结构,增强了系统的可靠性和性价比。
该电子钟特别适用于家庭、办公大楼、公共场所等。
关键词电子钟;单片机;硬件设计;软件设计ABSTRACTAround the electronic clock system design and development of the study and practice, details the electronic clock system overall, hardware design, software design, system solutions as well as the development and implementation. Introduction of a new technology based on in-system programming and C51 compiler equipped with an integrated development of new electronic clock design method, explains how it works and software and hardware design. In the hardware companies with KEIL C51 large-scale integrated circuit chip on its surrounding, to integrate 1 tablet 8051 implementation of scores of tablets separation components to implement functionality, almost the entire system for download on the same chip, implementation of the so-called SOC, thereby greatly simplifies system structure, enhances system reliability and high performance/price ratio. The electronic clock is particularly relevant for home, office buildings and public place, etc.Key words electronic clock; single-chip; hardware; software design目录1 系统总体设计方案 (4)1.1 设计课题任务 (4)1.2 功能要求说明 (4)1.3 总体方案介绍及工作原理 (4)2 硬件系统的设计 (6)2.1 系统各功能模块介绍 (6)2.2 系统电路图 (7)2.3 系统元器件清单 (7)3 软件系统的设计 (8)3.1设计使用单片机资源介绍 (8)3.2 软件系统各功能模块介绍 (8)3.3 软件系统程序流程框图 (9)3.4 软件系统的程序 (10)4 系统的仿真分析及结论 (11)4.1 系统设计的使用说明 (11)4.2 系统设计的仿真结果 (11)4.3 系统的误差分析 (12)4.4 设计体会 (12)4.5 教学建议 (13)参考文献 (14)致谢 (15)附录(1) (16)附录(2) (17)1 系统总体设计方案1.1 设计课题任务设计一个具有特定功能的电子钟。
第4章 单片机汇编语言程序设计
功能:从标号指定的地址单元开始,将8位二进制 数据按顺序依次存入形成数据表。数据表可以是 一个或多个字节数据、字符串或表达式,各项数 据用“,”分隔,一个数据项占一个字节单元。
ORG 1000H
TAB:DB -2,-4,100,30H,‘A’, ‘C’
用单引号括起来的字符存其ASCII码,负数存其 补码。
第4章 单片机汇编语言程序设计
4.1.2 伪指令
1.设置起始地址伪指令 ORG 格式: [标号:] ORG nn 该指令总是出现在每段源程序或数据块的开始。
汇编时,nn确定了后面第一条指令或数据的地 址,此后的源程序或数据块就依次连续存放在 以后的地址内,直到遇到另一个ORG指令为止。 如:
第4章 单片机汇编语言程序设计
第4章 单片机汇编语言程序设计
第4章 单片机汇编语言程序设计
4.1 汇编语言程序设计的基础知识 4.2 汇编程序设计方法 4.3 综合编程举例
第4章 单片机汇编语言程序设计
4.1 汇编语言程序设计的基础知识
4.1.1 汇编语言的语句格式
MCS-51单片机汇编语言的语句格式表示如下: [标号:] <操作码> [操作数] [;注释]
MOV A, R4 MOV R0, A M1: RET
第4章 单片机汇编语言程序设计
多分支程序,还可根据运算结果或输入数据将程 序转入不同的分支。
在多分支程序中,因为可能的分支会有 N个,若 采用多条 CJNE 指令逐次比较,程序的执行效率 会降低很多,特别是分支较多时更加明显。
一般采用跳转表的方法,通过两次转移来实现多 分支结构。
第4章 单片机汇编语言程序设计
ORG 2500H BR2: MOV R0, #00H MOV A, R1 ACALL COMP ;R0 清零 ;第一个数(R1)送A ; 比较(R1)与(R0)大小
AT89C51单片机电子时钟设计
AT89C51单片机电子时钟设计目录1 电子时钟 (4)1.1 电子时钟简介 (4)1.2 电子时钟的基本特点 (4)1.3 电子时钟的原理 (4)2 单片机识的相关知识 (4)2.1单片机简介 (4)2.2 单片机的特点 (5)2.3 AT89C51单片机介绍 (5)3 设计方案的选择 (7)3.1计时方案 (7)3.2 显示方案 (7)3.3 数码管显示工作原理 (8)3.4 键盘电路设计 (9)3.5 主控模块AT89C51 (9)4 系统软件设计 (9)附录 (12)摘要:单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次设计通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。
关键词:单片机;电子时钟;AT89C511 电子时钟1.1 电子时钟简介本设计采用AT89C51单片机,以汇编语言为程序设计的基础,设计一个用六位数码管显示时、分、秒的时钟。
现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零,从而达到计时的功能,是人民日常生活不可缺少的工具。
1.2 电子时钟的基本特点现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机架构下时钟控制程序;KEYA A键功能程序开启/关闭定时器;KEYB B键功能程序时值加1;KEYC C键功能程序分值加1;KEYD D键功能程序秒值加1;KEYE E键功能程序12/24时值转换;BEEP_BL整点报时;P0 显示接口;系统初始化程序****************************************************KEYA EQU P3.0 ;单片机控制设置KEYB EQU P3.1 ;单片机控制设置KEYC EQU P3.2 ;单片机控制设置KEYD EQU P3.3 ;单片机控制设置KEYE EQU P3.4 ;单片机控制设置BEEP EQU P3.7 ;单片机控制设置ORG 0000HAJMP MAIN ;转到系统初始化程序ORG 000BHAJMP PITO ;转到定时器0中断服务程序ORG 0100HMAIN: MOV SP, #60H ;确立堆栈区MOV TMOD, #01H ;设定定时器0为工作方式1MOV TL0, #0DCH ;装计数器初值MOV TH0, #0BHCLR 21H.0CLR TR0 ; TR0置"0",定时关闭SETB EA ; EA置"1",中断总允许SETB ET0 ; ET0置"1",定时器0中断; 允许MOV 30H, #10H ; 循环次数MOV 7EH, #0AH ; P.点显示初始化MOV R0, #79HMOV R1, #05HPP: MOV @R0, #0BHINC R0DJNZ R1, PPMOV R0, #31H ; 时、分、秒值存储单元清零Q00: MOV @R0, #00HINC R0DJNZ R1, Q00;监控程序**********************************************************LOOP: LCALL DIR ; 调显示子程序LCALL KEY ; 调键扫描子程序LOOP1: JB 20H.0, KEYA ; A键是否按下,是跳转到A键功能程序开启/关闭定时器JB 20H.1, KEYB ; B键是否按下,是跳转到B键功能程序时值加1JB 20H.2, KEYC ; C键是否按下,是跳转到C键功能程序分值加1JB 20H.3, KEYD ; D键是否按下,是跳转到D键功能程序秒值加1JB 20H.4, KEYE ; E键是否按下,是跳转到E键功能程序12/24时值转换LCALL DIRLJMP LOOP ; 跳转到监控程序;A键功能子程序****************************************************KEYA: CPL TR0 ;开启/关闭定时器SETB 21H.0AJMP LOOP ;返回;B键功能子程序****************************************************KEYB: JB TR0, KEYB1 ; 定时器是否运行,是跳转JNB 21H.0, KEYB2MOV R0, #36H ; 时值存储单元地址送R0LCALL DAAD1 ; 调加1子程序MOV A, R3 ; 时值加1后的值送累加器ALCALL BEEP_BL ; 整点报时XRL A, #12H ;时值是否到12时JNZ KEYB0 ;BACK: XRL A, #24H; 判是否到24时JNZ KEYB1 ; 时值是否到24时,否返回LCALL CLR0 ; 时值存储单元清零KEYB0: JB 20H.4, KEYB1; 是否启用12时值,否返回LCALL CLR0 ; 时值存储单元清零KEYB1: MOV 7DH, 35HMOV 7EH, 36HKEYB2: LJMP LOOP ; 返回监控程序;C键功能子程序****************************************************KEYC: JB 8CH, KEYC1 ; 定时器是否运行,否跳转MOV R0, #34H; 分值存储单元地址送R0LCALL DAAD1 ; 调加1子程序MOV A, R3 ;分值加1后的值送累加器AXRL A, #60H ;JNZ KEYC1 ; 分值是否到60分,否返回LCALL CLR0 ; 分值存储单元清零KEYC1: MOV 7CH, 34HMOV 7BH, 33HKEYC2: LJMP LOOP ; 返回监控程序;D键功能子程序**************************************************** KEYD: JB 8CH, KEYD1 ; 定时器是否运行,否跳转JNB 21H.0, KEYD2MOV R0, #32H ; 秒值存储单元地址送R0LCALL DAAD1 ; 调加1子程序MOV A, R3 ; 秒值加1后的值送R0XRL A, #60HJNZ KEYD1 ; 秒值是否到60秒,否返回LCALL CLR0 ; 秒值存储单元清0 KEYD1: MOV 79H, 31HMOV 7AH, 32HKEYD2: LJMP LOOP ; 返回监控程序;中断服务程序****************************************************** PITO: PUSH PSW ;中断服务程序,现场保护PUSH ASETB RS0 ;选第三组通用寄存器SETB RS1MOV TL0, #0DCH ; 计数器重新加载MOV TH0, #0BHMOV A, 30H ;循环次数减1DEC AMOV 30H, AJNZ RETO ;不满16次,转RET0返回MOV 30H, #10H ;满16次开始计时操作MOV R0, #32H ;秒显示单元地址ACALL DAAD1 ; 秒加1MOV A, R3 ; 加1后秒值在R3中XRL A, #60H ; 判是否到60秒JNZ RETO ; 不到转RET0返回ACALL CLR0 ; 到60秒显示单元清0MOV R0, #34H ;分显示单元地址ACALL DAAD1 ; 分加1MOV A, R3 ; 加1后分值在R3中XRL A, #60H ; 判是否到60分JNZ RETO ; 不到转RET0返回ACALL CLR0 ; 到60分显示单元清0MOV R0, #36H ; 时显示单元地址ACALL DAAD1 ; 时加1MOV A, R3 ; 加1后时值在R3中LCALL BEEP_BL ; 整点报时XRL A, #12H ; 时值是否到12时JNZ KEYB3 ;XRL A, #24H ; 判是否到24时JNZ RETO ; 不到转RET0返回ACALL CLR0 ; 到24时显示单元清0 KEYB3:JB 20H.4, RETO; 是否启用12时值,否返回ACALL CLR0 ; 时值存储单元清零RETO: CLR RS0 ; 返回第0组通用寄存器CLR RS1POP A ; 现场恢复POP PSWMOV 79H, 31H ; 时、分、秒值放缓冲区MOV 7AH, 32HMOV 7BH, 33HMOV 7CH, 34HMOV 7DH, 35HMOV 7EH, 36HRETI ; 中断返回;加1子程序******************************************************* DAAD1: MOV A, @R0 ; 加1子程序,十位送ADEC R0SW AP A ; 十位数占高4位ORL A, @R0 ; 个位数占低4位ADD A, #01H ; 加1DA A ; 十进制调整MOV R3, A ; 全值暂存R3中ANL A, #0FH ; 屏蔽十位数,取出个位数MOV @R0, A ; 个位值送显示缓冲单元MOV A, R3INC R0ANL A, #0F0H ; 屏蔽个位数取出十位数SW AP A ; 使十位数占低四位MOV @R0, A ; 十位数送缓冲单元RET ; 返回CLR0: CLR A ; 清缓冲单元子程序MOV @R0, A ; 十位缓冲单元清"0"DEC R0MOV @R0, A ; 个位数缓冲单元清"0"RET ; 返回;键盘扫描子程序*************************************************** KEY: LCALL KEYCHULI ; 调键值处理子程序JZ EXIT ; 没有键按下转到返回LCALL DIRLCALL DIR ; 调显示去抖动LCALL KEYCHULI ; 调键值处理子程序JZ EXIT ; 没有键按下转到返回MOV B, 20H ; 保存键值KEYSF: LCALL KEYCHULI ; 调键值处理子程序JZ KEY1 ; 键释放,转到恢复键值LCALL DIR ; 调显示子程序延时AJMP KEYSF ; 等到键释放KEY1: MOV 20H, B ; 键值送20H单元保存EXIT: RET ; 返回KEYCHULI: PUSH PSW ; 保护现场CLR RS1 ; 改变寄存器组号SETB RS0MOV P1, #0FFH ; 先向P1口写1MOV A, P1 ; P1口值送累加器ACPL A ; A值取反ANL A, #0FH ; 保存P1口的低4位MOV 20H, A ; A值送20H保存CLR RS1 ; 改变寄存器组号CLR RS0 ;POP PSW ; 恢复现场RET;显示子程序******************************************************** DIR: PUSH PSW ; 恢复现场SETB RS1 ; 改变寄存器组号CLR RS0MOV R0, #79H ; 建立显示缓冲区首地址MOV R3, #0FBH ; 设置位控码LD0: MOV P2, R3 ; 送位控码MOV A, @R0 ; 缓冲区值送累加器A DISP1: ADD A, #1BHMOVC A, @A+PC ; 取段控码并送A中DISP2: MOV P0, A ; 送段控码MOV R2, #09H ; 设置延时循环次数ACALL DEY ; 延时点亮INC R0 ; 缓冲区地址加1MOV A, R3 ; 位控码送AJNB ACC.1, HERE ; 是否到最高位,是转到返回JB ACC.5, LD2RL ARL A ; 不到向显示器高位移位LD2:RL AMOV R3, A ; 位控值保存到R4中AJMP LD0 ; 继续扫描HERE: CLR RS0 ; 改变寄存器组号CLR RS1POP PSW ; 恢复现场RET ; 返回DBB: DB 0C0HDB 0F9HDB 0A4HDB 0B0HDB 99HDB 92HDB 82HDB 0F8HDB 80HDB 90HDB 0CHDB 0FFH;整点报时********************************************************** BEEP_BL: MOV R6,#100BL1:CALL BL2CPL BEEPDJNZ R6,BL1MOV R5,#25CALL DEYRET ;返回计时BL2:MOV R7,#180BL3:NOPDJNZ R7,BL3RET;延时子程序******************************************************** DEY: PUSH 12HDEY0: PUSH 12HDEY1: PUSH 12HDEY2: DJNZ R2, DEY2POP 12HDJNZ R2, DEY1 POP 12HDJNZ R2, DEY0 POP 12HDJNZ R2, DEY RETEND。