3.2 子程序的设计
3.2.1 读、写DS1302子程序 ;写1302程序WRITE: CLR SCLK NOP
SETB RST NOP
MOV A,32H MOV R4,#8 WRITE1:
RRC A ;送地址给1302 NOP NOP CLR SCLK NOP NOP NOP
MOV IO,C NOP NOP NOP
SETB SCLK NOP NOP
DJNZ R4,WRITE1 CLR SCLK NOP
MOV A,31H MOV R4,#8 WRITE2: RRC A
NOP ;送数据给1302 CLR SCLK NOP NOP MOV IO,C NOP NOP NOP
SETB SCLK NOP NOP
DJNZ R4,WRITE2
CLR RST RET
;读1302程序 READ:
CLR SCLK NOP NOP SETB RST NOP
MOV A,32H MOV R4,#8 READ1:
RRC A ;送地址给1302 NOP
MOV IO,C NOP NOP NOP
SETB SCLK NOP NOP NOP
CLR SCLK NOP NOP
DJNZ R4,READ1 MOV R4,#8 READ2:
CLR SCLK
NOP ;从1302中读出数据 NOP NOP MOV C,IO NOP NOP NOP NOP NOP RRC A NOP
11
NOP NOP NOP
SETB SCLK NOP
DJNZ R4,READ2 MOV 31H,A CLR RST RET
五、作品总结
在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了作品。达到了预期的目的,在最初的设计中,发挥“三个臭皮匠,顶个诸葛亮”的作用。相互学习、相互讨论、研究。完了最初的设想。在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成。反而达到事半功倍的效果。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同组员的讨论,理清了思路,反而得心应手。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次比赛中学到了很多很多东西,这是最重要的。总之,参加电子竞赛我们的能力得到了全方位的提高。
致谢词
感谢学院给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。
在做作品的日子里得到了刘老师的悉心指导,在此向我们的指导教师致以诚挚的谢意。感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我们对这次的作品完成有了信心和动力,也给了我们很多无私的帮助和支持,我们在此深表谢意。
姓名:龚泽汗
参考文献
1 2
刘勇 编 数字电路 电子工业出版社 2004
陈正振 编 电子电路设计与制作 广西交通职业技术学院信息工程系 2007
3 杨子文 编 单片机原理及应用 西安电子科技大学出版社 2006 4 王法能 编 单片机原理及应用 科学出版社 2004
2010年5月20日
附录一:系统电路图
12
13
附录二:系统程序清单
CONFIG12 EQU 7FH TEMPH EQU 21H TEMPL EQU 20H REG2 EQU 22H REG3 EQU 23H REG4 EQU 24H DAT EQU P0.7 SCLK EQU P3.2 IO EQU P3.3 RST EQU P3.4 year DATA 66H month DATA 65H week DATA 64H day DATA 63H hour DATA 62H mintue DATA 61H second DATA 60H
ORG 0000H LJMP START ORG 001BH LJMP INTT1
START: ;初值 LCALL ZJ
SETB EA
MOV SCON,#00H ; 串行输出,方式0 MOV TMOD,#10H ;计数器1,方式1 MOV TL1,#00H MOV TH1,#00H
MOV 32H,#8EH
MOV 31H,#00H ;允许写1302 LCALL WRITE MOV 32H,#90H
MOV 31H,#0A6H ;1302充电,充电电流1.1MA
LCALL WRITE
;主程序~~~~~~~~~~~~~~~~~~~~~ MAIN1:
MOV 32H,#8DH ;读出年 LCALL READ MOV year,31H
MOV 32H,#8BH ;读出星期 LCALL READ MOV week,31H
MOV 32H,#89H ;读出月 LCALL READ MOV month,31H
MOV 32H,#87H ;读出日 LCALL READ MOV day,31H
MOV 32H,#85H ;读出小时 LCALL READ MOV hour,31H
MOV 32H,#83H ;读出分钟 LCALL READ
MOV mintue,31H
MOV 32H,#81H ;读出秒 LCALL READ
MOV second,31H
;~~~~~~~~~~~~分离缓存~~~~~~~~ MOV R0,year ;年分离,送显示缓存 LCALL DIVIDE MOV 7BH,R1 MOV 4BH,R1 MOV 7CH,R2 MOV 4CH,R2 MOV 78H,week
MOV 48H,week
MOV R0,month ;月分离,送显示缓存 LCALL DIVIDE MOV 79H,R1 MOV 49H,R1 MOV 7AH,R2 MOV 4AH,R2
MOV R0,day ;日分离,送显示缓存 LCALL DIVIDE MOV 76H,R1
14
MOV 46H,R1
MOV 77H,R2 MOV 47H,R2
MOV R0,hour ;小时分离,送显示缓存 LCALL DIVIDE MOV 74H,R1 MOV 44H,R1 MOV 75H,R2 MOV 45H,R2
MOV R0,mintue ;分钟分离,送显示缓存 LCALL DIVIDE MOV 72H,R1 MOV 42H,R1 MOV 73H,R2
MOV 43H,R2
MOV R0,second ;秒分离,送显示缓存 LCALL DIVIDE MOV 70H,R1 MOV 40H,R1 MOV 71H,R2 MOV 41H,R2 CLR EA
LCALL TOUTOU SETB EA
LCALL DISPLAY
LCALL GENGXIAN ;更新农历程序 JNB P0.1,SETG111
JNB F0,SSS setb P0.4 ;非闰月,则p0.4清零,指示灯亮 LJMP MAIN1 SETG111: LJMP SETG SSS:
clr P0.4 ;闰月,则p0.4置位,指示灯不亮 LJMP MAIN1
;~~~~~~~~~~~~~~ 温度 TOUTOU:
LCALL CHUSHI LCALL RDTEMP MOV A,TEMPL
ANL A,#11110000B
MOV TEMPL,A MOV A,TEMPH
ANL A,#00000111B ORL A,TEMPL SWAP A MOV 25H,A MOV A,25H MOV B,#64H DIV AB MOV A,B MOV B,#0AH DIV AB SWAP A ORL A,B MOV 10H,A RET
CHUSHI:
LCALL RESET MOV A,#0CCH LCALL WRITE111 MOV A,#4EH LCALL WRITE111 MOV A,#CONFIG12 LCALL WRITE111 RET
RDTEMP:
LCALL RESET MOV A,#0CCH LCALL WRITE111 MOV A,#44H LCALL WRITE111 LCALL DL1MS LCALL RESET MOV A,#0CCH LCALL WRITE111 MOV A,#0BEH LCALL WRITE111 LCALL ERAD111 MOV TEMPL,A LCALL ERAD111 MOV TEMPH,A RET RESET: LA:
15