AJMP SERVE ;转向中断服务程序 ORG 0100H ;
MAIN: MOV SCON ,#11010000B MOV PCON ,#00H
MOV TH1 ,#0E8H ;赋循环计数初值 MOV TL1 ,#0E8H 赋计数值 SETB TR1
SETB EA ;CPU允许中断
SETB ES ;允许串行口中断 MOV R0 ,#40H MOV R7 ,#32 MOV A , @R0
MOV SBUF ,A ;发送第一个数据 AJMP $
SERVE: CLR TI DJNZ R7,JXF CLR P1.0 CLR ES CLR EA RETI JXF: INC RO
MOV A , @R0
MOV SBUF ,A RET
3. (12分)编制一个用DAC0832产生三角波的程序,波形幅度在1~2之间,
频率100Hz。
答案 ORG 2200H START: MOV A,#64H
MOV DPTR,#7FFFH
5
UP: MOVX @DPTR,A ;线性上升段 ACALL DELAY
INC
A
CJNE A,#C8H,UP ;(A)≠100时,转UP
MOV A,#C8H
DOWN: MOVX @DPTR,A ;线性下降段 ACALL DELAY
DEC
A
CJNE A,#64H,DOWN ;(A)≠200时,转DOWN
SJMP DOWN ;完成一轮循环后,再次进行循环
DELAY: MOV R0,#25 ;延时子程序,12M晶振延时50us DJNZ R0,$ RET
4. (12分)自主设计一个钟表。
答案:使用8051单片机作为时钟控制芯片,应用单片机内部的定时/计数器T0
实现软时钟的目的。首先将T0设定工作于定时方式,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。并对机器周期计数形成基准时间,然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。
还要实现对时间的调整功能,8051的P0.0、P0.1、P0.2外接三个独立按键,当按下P0.0按键时,系统进入调时间的状态或启动时间显示的功能;当按下P0.1按键时,对显示的数码管进行加一的功能;当按下P0.2按键时,对显示的数码管进行减一的功能,达到调整时间的目的。
6
系统框图
7

