DS12C887与单片机制作万年历带汇编程序
基于DS12C887时钟芯片的多功能万年历设计概要

一、系统的结构和工作原理 1.系统结构此次课程设计的万年历,以AT89S52单片机为主控核心,由LCD 显示屏、DS12C887时钟芯片、温度传感器DS18B20、蜂鸣器、功能键盘、复位电路、晶振、电源模块等组成,系统结构框图如图1所示。
AT89S52单片机温度传感器DS18B20DS12C887时钟芯片LCD 显示屏(1602)蜂鸣器复位电路功能键盘电源模块图1 系统结构框图2.工作原理主控制器每隔一段时间(小于一秒钟)读一次时钟芯片的内部寄存器的值,将读出的时间、星期、温度等值实时显示在LCD 液晶屏上。
同时,主控制器不断的扫描按键电路和温度测量电路,当有按键按下时,识别出按键的值并调整相应的时间、星期值再写入时钟芯片内部。
温度数据由测量电路获得的环境温度值送人显示电路。
二、硬件设计1.主控核心—AT89S52单片机AT89S52是一个低功耗,高性能CMOS8位单片机,具有8K 在系统可编程Flash 存储器。
采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。
2.DS12C887时钟电路DS12C887与计算机常用的时钟芯片MC146818和DS12887管脚兼容,可直接替换。
采用DS12C887芯片设计的时钟电路无需任何外围电路和器件,并且有良好的微机接口。
DS12C887芯片内有微功耗,外围接口简单,精度高,工作稳定可靠等优点,广泛用于各种需要较高精度的实时时钟系统中。
DS12C887主要功能如下:(1)内含一个锂电池,断电后运行十年以上不丢失数据; (2)计秒、分、时、天、星期、日、月、年、并有闰年补偿功能;(3)二进制数码或BCD 码表示时间,日历和定闹;(4)12小时或24小时制,12小时时钟模式带有PM 和AM 指示,有夏令时功能; (5)Motorola 和Intel 总线时序选择;(6)有128个字节RAM 单元与软件接口,其中14个字节作为时钟和控制寄存器,114 字节为通用RAM ,所有RAM 单元数据都具有掉电保护功能; (7)可编程方波信号输出;(8)中断信号输出(IRQ )和总线兼容、定闹中断、周期性中断、时钟更新周期、结束 中断可分别由软件屏蔽,也可分别进行测试; DS12C887时钟芯片和单片机的硬件连接如下图2 :EA/VPP 31XTAL119XTAL218RESET 9P3.7/RD 17P3.6/WR 16P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN 29ALE/PROG 30P3.1/TXD 11P3.0/RXD 10VCC 40GND 20U1AT89S52VCC+C1210u FR910KS17Y112MHzC930p FC1030p FP00P01P02P03P04P05P06P07VCCP20P21P22P23P24P25P27P26P10P11P12P04P13P14P15P16P00P17P01P32P02P30P03P31P05P33P06P34P07P35P20P35WR P37P32P34242322212019181716151413121110987654321DS12C887CSASR/WNCDSRESETIRQNCNCNCSQWVCCGND AD7AD6AD5AD4AD3AD2AD1AD0NC MOT NC 123456789RP1RESPACKVCCU3P36P37图2 DS12C887与单片机的连接3.DS18B20温度传感器采用数字式温度传感器DS18B20,其仅需一条数据线进行数据传输,易于与单片机连接,可以去除A/D 模块,降低硬件成本,简化系统电路。
基于DS12C887的实时日历时钟的设计_课程设计任务书

中北大学信息商务学院课程设计任务书题目:专业综合实践之单片机系统部分:基于DS12C887的实时日历时钟的设计课程设计任务书课程设计任务书目录一系统设计的主要内容和设计思路 (5)1.1主要内容 (5)1.2设计思路 (5)1.2.1 日历时钟芯片的选择 (5)1.2.2LED简介 (6)二硬件电路设计 (8)2.1 结构框图 (8)2.2 主要器件 (9)2.2.1 单片机 (9)2.2.2 日历时钟芯片DS12C887 (13)2.2.3 1602液晶显示屏 (15)2.3 电路原理图及说明 (17)2.3.1 控制电路 (17)2.3.2 日历时钟电路 (18)三软件设计 (18)3.1 时钟部分软件设计 (19)3.1.1 DS12C887的内存空间 (19)3.1.2程序流程 (21)四设计结果 (22)4.1基于DS12C887的实时日历时钟显示系统的总程序 (22)4.2基于DS12C887的实时日历时钟显示系统总电路图 (29)五结果分析 (30)六心得体会 (30)七参考文献 (31)一系统设计的主要内容和设计思路1.1主要内容本次的设计题目是电子万年历设计,要求实现年、月、日、时、分、秒的正常显示,需要硬件和软件的结合来实现。
本次设计利用时钟日历芯片DS12887的特性和AT89C51单片机的功能利用实现的。
时钟芯片在电源的作用下向通过P2口向AT89C51单片机输入时间信号,AT89C51单片机在接受到时间信号后通过P0将信号送到单片机另一扩展芯片ULN2003,驱动LED数码管显示,同时将信号通过P1口送往单片机的扩展芯片74LS154,当送出第一个段码时,单片机输出的位码是0001,而经过4-16译码器74LS154后就是1111 1111 1111 1110,这时就选中了第一个数码管显示;……当送出第十六个段码时,单片机输出的位码是1111,4-16译码器输出0111 1111 1111 1111,这时就选中了第十六个数码管显示,从而74LS154将接收到的地址信号译码后动态驱动相应的LED,由于LED数码管的公共端由74LS154分时选通,这样,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式。
毕业设计---基于单片机的多功能电子万年历的设计

基于单片机的多功能电子万年历的设计摘要随着科技的快速发展,自从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
本文主要介绍了基于单片机的智能电子万年历的研制,该万年历能够实时显示公历年、月、日、时、分、秒,以及对应的农历日期、24节气、天干地支、闹铃功能,同时还能够实时测取环境温度。
本系统的硬件部分主要由A VR单片机、时钟芯片、温度传感器等部件组成,文中给出了详细的硬件设计实现及相关电路图;软件部分主要包含公历转农历的算法设计模块、显示模块、时间的读取、温度的检测模块,按键的扫描输入模块等,文中给出了系统的软件程序流程图及各功能模块的软件程序清单,最后介绍了整体系统的设计实现、仿真及调试过程,给出了下一步的改进方案等。
关键词:单片机;液晶技术;万年历;时钟芯片Design of Multifunctional digital Perpetual Calendar Based on MCUAbstractWith the development of technology,Since the concept of the sun, Baizhong, andnow the electronic bell,human beings continue to study and constant innovation record。
This paper-based Microcontroller Development of Intelligent electronic calendar, The calendar can display real-time in the calendar year, month, day, hours, minutes and seconds,a nd the correspond ing date of the Lunar New Year, 24 Solar Terms,at the same time also to real-time measurement from the ambient temperature,In addition to the user through the keyboard input years of history,for the correspond ing period of the Lunar.The system hardware from some of the major A VR microcontroller, a number of digital control, decoder, the clock chip,temperature sensors and other components,the paper gives a detailed design and implementation of hardware and related circuit;Software contains some of the major Lunar calendar to the algorithm design module,dynamic digital display modules,time to read,temperature detection module,Press enter the scanning module.In this paper, the system software modules and flow chart of the list of software programs,Finally, the realization of the overall system design, simulation and debugging process, the next step is the improvement programmes.Keywords:MCU;crystal technology;Calendar;Clock chip目录引言 (1)第1章绪论 (2)1.1课题的背景与意义 (2)1.2 数字万年历的现状与发展 (2)1.3 论文的主要工作及章节安排 (3)1.4 本章小结 (3)第2章方案论证比较.............................................................................. (4)2.1 多功能数字万年历系统概述 (4)2.2计时方案 (4)2.3温度检测方案 (5)2.4显示方案 (5)2.5本章小结 (5)第3章系统硬件设计 (6)3.1 主控制器ATmega16 单片机介绍 (6)3.2 时钟电路DS1302 (6)3.3 温度检测DS18B20 (7)3.4 动态显示 (8)3.5 键盘接口 (8)3.6 语音闹铃模块 (8)3.7 电源设计 (9)3.8本章小结 (11)第4章系统软件设计 (12)4.1 公历计算显示程序设计 (13)4.1.1 DS1302 内部寄存器 (13)4.1.2 时间读取程序设计 (15)4.2 农历转换程序设计 (16)4.2.1 公历转农历算法研究 (16)4.2.2 干支纪年简介 (18)4.2.3 公历转农历程序 (18)4.3 温度测量程序设计 (20)4.3.1 DS18B20 的测温原理 (20)4.3.2 温度程序 (21)4.4 二十四节气算法研究 (23)4.5系统仿真 (24)4.6本章小结 (25)结论与展望 (26)致谢 (27)参考文献 (28)附录 A 电子万年历原理图 (29)附录 B 外文文献与译文 (30)英文原文: (30)中文译文: (33)附录 C 参考文献题录及摘要 (35)附录 D 电子万年历源程序 (37)插图清单图2-1 数字万年历系统框图 (4)图3-1 DS1302与ATmega16连接图 (7)图3-2 DS18B20与AtMEGA16连接图 (8)图3-3 报时电路 (9)图3-4 稳压电源原理图 (10)图3-5 电源电路 (10)图4-1 系统程序流程图 (13)图4-2 公历程序流程图 (14)图4-3 DS18B20测温原理 (21)表格清单表3-1 LCD12864显示内容 (8)表4-1 DS1302的寄存器及其控制字 (14)表4-2 RS位配置 (15)引言人类的日常生活离不开时间,任何具有周期性变化的自然现象都可以用来测量时间。
用单片机做数字万年历

关键词:时钟芯片DS12C887;温度采集DS18B20;单片机AT89S52;液晶显示1602
PDF 文件使用 "pdfFactHale Waihona Puke ry Pro" 试用版本创建
摘要
电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、 日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能。本系统选用DALLAS公司 生产的日历时钟芯片DS12C887来作为实时时钟芯片,为本系统提供详细的年、月、日、 星期和小时、分钟等时间信息。数字万年历采用直观数字显示,可以同时显示年、月、日、 周日、时、分、秒和温度等信息,还具有定时和时间校准等功能。该电路采用AT89S52 单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
结束语 ................................................................................................................ 25 致谢词 ................................................................................................................ 26 参考文献 ............................................................................................................ 27 附件 1 ................................................................................................................. 28
基于51单片机电子万年历设计

基于51单片机电子万年历设计大连民族学院机电信息工程学院自动化系单片机系统课程设计报告题目:电子万年历专业:自动化班级:106学生姓名:指导教师:设计完成日期:2012年11月30日1任务分析和性能指标1.1任务分析设计一个具有报时功能、停电正常运行(来电无需校时)、闹钟功能、带有年月日、时分秒及星期显示的电子日历。
电子万年历是日常生活中常见的小型电子产品,其形式多种多样,小到带有日期的电子腕表,大到公共场所悬挂的大型电子日历,此外,眼下我们还常能在宾馆、饭店等场所见到一种带有年、月、日、时、分、秒、星期甚至节气等信息的电子日历牌。
电子日历的主要功能是给人们提供时间和日期信息,无论其形式如何,从外部都可分为显示和校准两部分。
为使电子日历协调工作,整个系统从功能上可分为实时时钟、显示和键盘三个模块,分别完成时间和日期的计算以及人机交互的管理等。
1.2性能指标实时时钟(RTC:Real Time Clock)是系统的核心,其运行精度直接影响产品质量。
实时时钟的实现有两种方案可选,一是利用单片机系统时钟和中断完成时间和日期的计算;二是利用专用时钟芯片。
前者不用附加芯片,系统简单,但是累计误差较大,只有短时计时才可使用。
长时间计时一般都采用后者。
后者采用32.768KHz晶体振荡器振作为脉冲源,内部的15位计数器刚好产生标准秒脉冲。
该类芯片除时钟计时外,还有年月日和星期的计算功能,并且还可计算闰年。
芯片初始化后可脱离CPU自动运行,有些芯片内部带有电池,出厂时芯片即开始运行。
专用时钟芯片的种类很多,与CPU的通信方式有并行,也有串行。
常见的芯片有DALLAS 公司生产的DS1302和DS12C887,前者为串行,需要外加后备电池;后者为并行,芯片内置锂电池和晶体振荡器,无外加电源的情况下可运行10年。
此外,还有许多时钟芯片,如Epson、Holtek、深圳兴威帆等公司都推出自己的时钟芯片。
这次我们选用的芯片是DS12C887。
基于DS12C887时钟芯片的电子万年历设计

基于DS12C887时钟芯片的电子万年历设计作者:徐锦铜康晴茜来源:《丝路视野》2018年第31期【摘要】本文阐述了一种基于DS12C887时钟芯片的电子万年历软硬件设计方法,使用proteus软件设计和绘制了电子万年历的电路连接图,并通过1602液晶屏显示时钟信息,验证了电子万年历电路及其程序设计的正确性,并给出了部分C程序代码。
【关键词】DS12C887;时钟芯片;单片机在需要时间信息的电路设计中,设计人员通常采用时钟芯片获取时间信息。
目前,市场中的时钟芯片种类多样,比如DS12C887、PCF8485、SB2068、DS1302等。
其中DS12C887具有价格低、功耗小、易操作等优点,本文选用DS12C887作为设计电子万年历的时钟芯片。
一、电路连接电路原理图如图1所示,主要包括AT89C52单片机、DS12C887、1602液晶屏和3个独立按键等元器件,通过仿真,从图1中可以看到日历信息是2018年9月12日,星期三,17点16分3秒,说明本文设计的电子万年历软硬件设计正确,功能正常。
(一)DS12C887介绍及其与单片机的接口电路DS12C887是DALLAS公司推出的涓流充电时钟芯片,可计时到2100年前的年、月、日、时、分、秒、星期七种日历时间信息并自带闰年补偿功能;自带晶体振荡器并内置锂电池,在没有外部电源的情况下可工作长达10年之久;有12小时制和24小时制两种计时模式。
其中在12小时制模式中,用A.M.和RM.区分上午和下午;可选用夏令时模式;时间表示方法有两种:一种用二进制数表示,一种用BCD码表示;内部带有128字节RAM,其中11字节用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,113字节RAM供用户使用;数据/地址总线复用,具有MOTOROLA和INTEL两种总线时序,本文在设计时采用的是INTEL总线。
下面阐述DS12C887的电路连接问题:DS12C887一共有24个管脚,其中6个管脚为NC (悬空管脚,不连接),有效管脚为18个。
基于51单片机 和 DS12C887的日历时钟显示系统设计

基于DS12C887的日历时钟显示系统设计在银行或者其他的公共场合中,经常会看到显示实时信息的显示屏,其中包括年、月、日、星期、时间等,本例子的功能是在51单片机系统中设置、获取、记录实时的日历时钟信息并通过数码管显示,选用日历时钟芯片DS12C887作为实时时钟芯片,为系统提供详细的时间信息,次款芯片内部有锂电池,可以带掉电的情况下保存10年以上。
主要器件:1、AT89C52单片机芯片,用于对时钟芯片的控制和初始化,并控制数码管显示。
2、日历时钟芯片DS12C887。
试验流程图;试验电路图:试验程序代码://CalendarClk.h程序#ifndef _CALENDARCLK_H // 防止CalendarClk.h被重复引用#define _CALENDARCLK_H#include <reg52.h>#include <absacc.h>#define uchar unsigned char#define uint unsigned int/* DS12C887 内部专用寄存器宏定义 */#define MIN XBYTE[0x0102]#define HOUR XBYTE[0x0104]#define DAYOFWEEK XBYTE[0x0106]#define DAYOFMONTH XBYTE[0x0107]#define MONTH XBYTE[0x0108]#define YEAR XBYTE[0x0109]#define REG_A XBYTE[0x010a]#define REG_B XBYTE[0x010b]/* 由串口获得的日历时钟信息变量,用于对芯片时间的设置 */uchar year1,month1,dayofweek1,dayofmonth1,hour1,min1;/* 芯片DS12C887提供的日历时钟信息变量 */uchar year2,month2,dayofweek2,dayofmonth2,hour2,min2;#endif//CalendarClk.c程序#include "CalendarClk.h"/* 从串行口获取数据函数,数据包括:year1,month1,dayofweek1, dayofmonth1,hour1,min1。
011 基于DS12C887的万年历

制作名称:基于DS12C887的万年历1、制作编号:0012、难度等级:★★★★★(适合第5、7学期制作)3、设计要求1)用AT89C51作主控制器,时钟芯片DS12887,温度传感器DS18B20设计一个电子万年历。
2)用16个数码管分别表示十年、年、十月、月、十日、日、星期、十时、时、十分、分、十秒、秒、百度、十度和度。
3)显示采用串行口输出段码,用十六片74LS164来驱动十六个数码管。
4)系统采用集成稳压块7805供电。
4、电路原理图终万年历原理及PCB图(5月12日).Ddb 5、方案论证按照系统设计功能的要求,初步设计系统由主控模块,时钟模块,显示模块,温度传感模块,键盘接口模块等五个模块组成。
主控芯片使用51系列AT89C51单片机时钟芯片使用了美国DALLAS公司推出的与MC146818兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟DS12887,采用DS12887作为主要计时芯片,可作到计时准确。
显示模块采用普通的共阳LED数码管,键输入采用查询法实现调整功能。
6、硬件介绍6.1 系统硬件电路的设计系统由主控制器AT89C51,时钟芯片DS12887,温度传感器DS18B20,串口显示电路以及键扫描电路组成。
6.2 DS12C1887性能介绍1)器件特性DS12C887实时时钟芯片功能丰富,可以用来直接代替IBM PC上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887相兼容。
由于DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题; DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。
在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节 RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM使用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;**************************************
;DS12C887:1脚MOT 接VCC(按MOTO时序)
; 4~11脚总线接89C2051(对应P1.0~P1.7脚)
; 13脚CS 接P3.2
; 14脚AS 接P3.3
; 15脚RW 接P3.5
; 17脚DS 接P3.7
; 18脚RESET 接VCC
; 19~23脚悬空
;74HC595:11脚SRCLK 时钟接P3.4
; 12脚RCLK 副时钟与SRCLK 电平相反接P3.0
; 13脚允许端高电平禁止,但数据可传入并锁存,可等所有位写入数据后允许输出,可改善显示
; 14脚SER 数据接P3.1
;74HC14P:六反相器,用于单片机P口输出缓冲,提高抗干扰能力
;**************************************
org 0000h
acall delay1
T_SEC EQU 40H ;存秒
T_MIN EQU 41H ;存分
T_HOUR EQU 42H ;存时
T_WEEK EQU 43H ;存星期
T_DAY EQU 44H ;存日
T_MON EQU 45H ;存月
T_YEAR EQU 46H ;存年
CS EQU p3.2 ;片选低有效
AS EQU p3.3 ;地址锁存,下降沿有效
RW EQU p3.5 ;低电平写,高电平读
DSRD EQU p3.7 ;低电平写,高电平读
KEY EQU p3.4
mov p1,#0ffh
mov p3,#0ffh
mov r0,#3Dh ;位值暂存(31~3Dh)
mov r3,#8 ;字节传输(8段)
mov r4,#13 ;LED 位数传输(13位)
MIAO:
star: ;初始化芯片
MOV B,#0BH ;芯片内B控制器SET位为1,停止芯片
MOV A,#82H
ACALL WAD
MOV B,#0AH ;芯片内A控制器
MOV A,#0A0H
ACALL WAD
MOV B,#0CH
MOV A,#00H
ACALL WAD
MOV B,#0DH
ACALL RDT
;===============================
MOV B,#00H ;秒
MOV A,#30H
ACALL WAD
MOV B,#02H ;分
MOV A,#51H
ACALL WAD
MOV B,#04H ;时
MOV A,#20H
ACALL WAD
MOV B,#06H ;周
MOV A,#02H ;置时间初值
ACALL WAD
MOV B,#07H ;日
MOV A,#11H
ACALL WAD
MOV B,#08H ;月
MOV A,#11H
ACALL WAD
MOV B,#09H ;年
MOV A,#08H
ACALL WAD
;================================
MOV B,#0AH
MOV A,#020H
ACALL WAD
MOV B,#0BH ;启动芯片
MOV A,#02H
ACALL WAD
;=====================
MOV B,#0AH ;A控制器
ACALL RDT ;该段有效时芯片不能更新时间初值JB ACC.7,MIAO ;但可以手动复位单片机进行更新;=====================
MOV B,#00H ;读秒寄存器
ACALL RDT
MOV 78H,A
LCALL DELAY1 ;解决闪烁问题,但每秒出现闪烁MOV B,#00H ;读秒寄存器
ACALL RDT
CJNE A,78H,X
AJMP MIAO
;===================== X: MOV 60H,A
ANL 60H,#0FH
SWAP A
ANL A,#0FH
MOV 3DH,60H
MOV 3CH,A
FEN:
MOV B,#02H ;读分寄存器
ACALL RDT
MOV 60H,A
ANL 60H,#0FH
SWAP A
ANL A,#0FH
MOV 3BH,60H
MOV 3AH,A
SHI:
MOV B,#04H ;读时寄存器
ACALL RDT
MOV 60H,A
ANL 60H,#0FH
SWAP A
ANL A,#0FH
MOV 39H,60H
MOV 38H,A
ZHOU:
MOV B,#06H ;读周寄存器
ACALL RDT
MOV 60H,A
ANL 60H,#0FH
MOV 37H,60H
RII:
MOV B,#07H ;读日寄存器
ACALL RDT
MOV 60H,A
ANL 60H,#0FH
SWAP A
ANL A,#0FH
MOV 36H,60H
MOV 35H,A
YUE:
MOV B,#08H ;读月寄存器
ACALL RDT
MOV 60H,A
ANL 60H,#0FH
SWAP A
ANL A,#0FH
MOV 34H,60H
MOV 33H,A
NIAN:
MOV B,#09H ;读年寄存器
ACALL RDT
MOV 60H,A
ANL 60H,#0FH
SWAP A
ANL A,#0FH
MOV 32H,60H
MOV 31H,A
ACALL DISP
ACALL DELAY1
AJMP MIAO
WAD: ;时钟芯片写地址
MOV P3,#0FFH
MOV P1,B ;送地址
CLR CS ;片选有效低电平
CLR RW ;低电平为写前半期
CLR DSRD
ACALL DELAY
CLR AS ;下降沿锁存地址B
SETB DSRD
ACALL DELAY ;延时大于5uS
MOV P1,A ;送数据
CLR DSRD
NOP
CLR CS
RET
RDT: ;从芯片读数据
MOV P3,#0FFH
MOV P1,B ;送地址
CLR CS ;片选有效低电平
CLR RW ;低电平为写前半期
CLR DSRD
ACALL DELAY
CLR AS ;下降沿锁存地址B
MOV P1,#0FFH
SETB RW
SETB DSRD
NOP
MOV A,P1
NOP
CLR CS
RET
disp: m ov a,@r0
mov dptr,#tab
movc a,@a+dptr
disp1: clr c
rlc a
mov p3.1,c ;数据,高低电平值
clr p3.0
setb p3.4
CLR P3.4 ;时钟,下降沿有效
setb p3.0
djnz r3,disp1
dec r0
mov r3,#8
djnz r4,disp
mov p3,#0ffh
MOV R0,#3DH
MOV R4,#13
ret
delay: mov r5,#1
loop: mov r6,#3
djnz r6,$
djnz r5,loop
ret
delay1: mov r5,#200
loop1: mov r6,#200
LOOP2: MOV R7,#1
DJNZ R7,$
djnz r6,LOOP2
djnz r5,loop1
ret
tab: db 3h,9fh,25h,0dh,99h,49h,41h,1fh,1h,9h end。