源程序代码即存储单元分配.docx
- 文档编号:27362086
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:21
- 大小:16.67KB
源程序代码即存储单元分配.docx
《源程序代码即存储单元分配.docx》由会员分享,可在线阅读,更多相关《源程序代码即存储单元分配.docx(21页珍藏版)》请在冰豆网上搜索。
源程序代码即存储单元分配
附件二:
源程序代码即存储单元分配
ORG0000H
AJMPMAIN
ORG0003H
AJMPJIANPAN
ORG0013H
AJMPJJQK
ORG0100H
MAIN:
MOV58H,#0;
MOV59H,#4;设定南北方红灯初始时间为4s
MOV5AH,#0
MOV5BH,#3;设定黄灯初始时间为3s
MOV5CH,#0;
MOV5DH,#2;设定南北方绿灯初始时间为2s
MOV5EH,#0
MOV5FH,#1;设定初始循环次数为1
SETBEA
SETBIT0
SETBIT1
SETBEX0
SETBEX1;中断允许
CLRF0;用来判断黄转绿,还是黄转红
CLR7DH;;用来判定时间次数值的输入次数
SETB7EH;用来判断左转方
MOV60H,#75
MOV61H,#60
MOV38H,5FH
Y:
CPLF0
MOV32H,#0
MOV33H,5BH
Y1:
MOV70H,60H
D0:
MOVP2,#07H;0号管亮
MOVDPTR,#2000H
MOVA,33H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;1号管亮
MOVDPTR,#2000H
MOVA,32H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#04H
MOVP0,#0FFH;显示东西方黄灯,3号显像管全亮
ACALLDLY
MOVP2,#01H
MOVP0,#0FFH;显示南北方黄灯,6号显像管全亮
ACALLDLY
DJNZ70H,D0;使整段子程序用时1秒
DJNZ33H,Y1
JBF0,BLUE;个位为0,即刻变灯,F0=1,绿灯。
F0=0,红灯
SJMPRED
BLUE:
MOV34H,5CH
MOV35H,5DH
MOVA,34H
JNZBLUE2;定时大于秒,则转移
BLUE1:
MOV70H,60H
D2:
MOVP2,#07H;0号管亮
MOVDPTR,#2000H
MOVA,35H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;1号号管亮
MOVDPTR,#2000H
MOVA,34H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#02H
MOVP0,#0FFH;显示南北方绿灯,5号显像管全亮
ACALLDLY
MOVP2,#03H
MOVP0,#0FFH;显示东西方红灯,4号显像管全亮
ACALLDLY
DJNZ70H,D2;使整段子程序用时1秒
DJNZ35H,BLUE1
SJMPY;个位为0,即刻变灯
BLUE2:
MOV70H,60H
D3:
MOVP2,#07H;;0号管亮
MOVDPTR,#2000H
MOVA,35H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;;1号管亮
MOVDPTR,#2000H
MOVA,34H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#02H
MOVP0,#0FFH;显示南北方绿灯,5号显像管全亮
ACALLDLY
MOVP2,#03H
MOVP0,#0FFH;显示东西方红灯,4号显像管全亮
ACALLDLY
DJNZ70H,D3;使整段子程序用时1秒
DEC35H
MOVA,35H
CJNEA,#0FFH,BLUE2;
MOV35H,#9
DJNZ34H,BLUE2
SJMPBLUE1
RED:
MOV36H,58H
MOV37H,59H
MOVA,36H
JNZRED2;;定时大秒,则转移
RED1:
MOV70H,60H
D4:
MOVP2,#07H
MOVDPTR,#2000H
MOVA,37H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;;号管亮
MOVDPTR,#2000H
MOVA,36H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#00H
MOVP0,#0FFH;显示南北方红灯,7号显像管全亮
ACALLDLY
MOVP2,#05H
MOVP0,#0FFH;显示东西方绿灯,2号显像管全亮
ACALLDLY
DJNZ70H,D4;使整段子程序用时1秒
DJNZ37H,RED1
SJMPN;个位为0,即刻变灯
RED2:
MOV70H,60H
D5:
MOVP2,#07H;;管亮
MOVDPTR,#2000H
MOVA,37H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;;管亮
MOVDPTR,#2000H
MOVA,36H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#00H
MOVP0,#0FFH;显示南北方红灯,7号显像管全亮
ACALLDLY
MOVP2,#05H
MOVP0,#0FFH;显示东西方绿灯,2号显像管全亮
ACALLDLY
DJNZ70H,D5;使整段子程序用时1秒
DEC37H
MOVA,37H
CJNEA,#0FFH,RED2;
MOV37H,#9
DJNZ36H,RED2
SJMPRED1
N:
DJNZ38H,Z
JB7EH,TL
LJMPL1
Z:
LJMPY;
TL:
CPL7EH
MOV39H,#0
MOV38H,5FH;循环次数
MOV36H,58H
MOV37H,59H;南北向红灯时长
MOVA,36H
JNZRED02;定时大于,则转移
RED01:
MOV70H,61H
D6:
MOVP2,#07H;0号管亮
MOVDPTR,#2000H
MOVA,37H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;1号管亮
MOVDPTR,#2000H
MOVA,36H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#00H
MOVP0,#0FFH;显示南北方红灯,7号显像管全亮
ACALLDLY
MOVP2,#05H
MOVP0,#0FFH;
ACALLDLY
MOVP2,#04H
MOVP0,#0FFH;显示东西方黄绿灯,2、3号显像管全亮,表示继续+左转
ACALLDLY
DJNZ70H,D6;使整段子程序用时1秒
DJNZ37H,RED01
SJMPY00;个位为0,即刻变灯
RED02:
MOV70H,61H
D7:
MOVP2,#07H;;0号管亮
MOVDPTR,#2000H
MOVA,37H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;;1号管亮
MOVDPTR,#2000H
MOVA,36H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#00H
MOVP0,#0FFH;显示南北方红灯,7号显像管全亮
ACALLDLY
MOVP2,#05H
MOVP0,#0FFH;
ACALLDLY
MOVP2,#04H
MOVP0,#0FFH;显示东西方黄绿灯,2、3号显像管全亮
ACALLDLY
DJNZ70H,D7;使整段子程序用时1秒
DEC37H
MOVA,37H
CJNEA,#0FFH,RED02;
MOV37H,#9
DJNZ36H,RED02
AJMPRED01
Y00:
MOV32H,#0
MOV33H,5BH
Y01:
MOV70H,60H
D8:
MOVP2,#07H;0号管亮
MOVDPTR,#2000H
MOVA,33H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;;1号管亮
MOVDPTR,#2000H
MOVA,32H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#01H
MOVP0,#0FFH;显示南北方黄灯,6号显像管全亮
ACALLDLY
MOVP2,#03H
MOVP0,#0FFH;显示东西方红灯,4号显像管全亮
ACALLDLY
DJNZ70H,D8;使整段子程序用时1秒
DJNZ33H,Y01
LJMPY
L1:
CPL7EH
MOV39H,#0
MOV38H,5FH
MOV33H,5BH
Y001:
MOV32H,#0
MOV70H,60H
D10:
MOVP2,#07H;;0号管亮
MOVDPTR,#2000H
MOVA,33H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;;1号管亮
MOVDPTR,#2000H
MOVA,32H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#01H
MOVP0,#0FFH;显示南北方黄灯,6号显像管全亮
ACALLDLY
MOVP2,#04H
MOVP0,#0FFH;显示东西方黄灯,3号显像管全亮
ACALLDLY
DJNZ70H,D10;使整段子程序用时1秒
DJNZ33H,Y001
YL:
MOV36H,58H
MOV37H,59H
MOVA,36H
JNZYL2;定时大于秒,则转移
YL1:
MOV70H,61H
D15:
MOVP2,#07H;0号管亮
MOVDPTR,#2000H
MOVA,37H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;1号号管亮
MOVDPTR,#2000H
MOVA,36H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#02H
MOVP0,#0FFH;显示南北方黄灯+绿灯,5,6号显像管全亮
ACALLDLY
MOVP2,#01H
MOVP0,#0FFH
ACALLDLY
MOVP2,#03H
MOVP0,#0FFH;显示东西方红灯,4号显像管全亮
ACALLDLY
DJNZ70H,D15;使整段子程序用时1秒
DJNZ37H,YL1
LJMPY;个位为0,即刻变灯
YL2:
MOV70H,61H
D14:
MOVP2,#07H;;0号管亮
MOVDPTR,#2000H
MOVA,37H
MOVCA,@A+DPTR
MOVP0,A;显示个位
ACALLDLY
MOVP2,#06H;;1号管亮
MOVDPTR,#2000H
MOVA,36H
MOVCA,@A+DPTR
MOVP0,A;显示十位
ACALLDLY
MOVP2,#02H
MOVP0,#0FFH;显示南北方绿灯,5,6号显像管全亮
LCALLDLY
MOVP2,#01H
MOVP0,#0FFH
ACALLDLY
MOVP2,#03H
MOVP0,#0FFH;显示东西方红灯,4号显像管全亮
ACALLDLY
DJNZ70H,D14;使整段子程序用时1秒
DEC37H
MOVA,37H
CJNEA,#0FFH,YL2;
MOV37H,#9
DJNZ36H,YL2
LJMPYL1
JIANPAN:
JNBP3.4,Z2;
MOVR7,P2
KC0:
JNBP3.4,Z2;
MOVP1,#0FH
LCALLDLY
MOVA,P1
ANLA,#0FH
MOVB,A
MOVP1,#0F0H
LCALLDLY
MOVA,P1
ANLA,#0F0H
ORLA,B
CJNEA,#0FFH,QUDOU1;相等则为无键按下,不相等为可能有键按下
JNBP3.4,Z2;3.4=0,中断结束
AJMPKC0
Z2:
MOVP2,R7
LJMPRETURN
QUDOU1:
JNBP3.4,Z2
ACALLDLY;;延时
ACALLKC1;延迟后再判断
CJNEA,#0FFH,XZ;;不相等,有按键,进入判断按键程序
SJMPKC0;;(相等,无按键,接着扫描)
KC1:
JNBP3.4,Z2
MOVP1,#0FH;判断是否为抖动
LCALLDLY
MOVA,P1
ANLA,#0FH
MOVB,A
MOVP1,#0F0H
LCALLDLY
MOVA,P1
ANLA,#0F0H
ORLA,B
RET
XZ:
JNBP3.4,Z2
MOVP1,#0FH
ACALLDLY
JBP1.3,SR;判值1;P1.3=0灯种键按下,=1,按下的为时键
PD:
JNBP3.4,Z2
MOVB,A
MOVDPTR,#1000H
MOVR2,#0FFH
PD1:
INCR2
MOVA,R2
MOVCA,@A+DPTR
CJNEA,B,PD1
MOVA,R2
MOVDPTR,#2100H
MOVCA,@A+DPTR
MOVP2,#07H
MOVP0,A;数码管显示灯种
ACALLDLY
ACALLDELAY;
SJMPKC0;;扫描,等待输入时间)
SR:
JB7DH,TN2;F0=1则跳到设置个位值的程序
TN1:
MOVB,A;;判断键值
MOVDPTR,#1000H
MOVR3,#0FFH
TN10:
JNBP3.4,Z2
INCR3
MOVA,R3
MOVCA,@A+DPTR
CJNEA,B,TN10
MOVA,R3;R2值为按键代表的值(0-9)
MOVDPTR,#2000H;
MOVCA,@A+DPTR;
MOVP0,A;;显示输入的时间值
MOVA,R2;
RLA;;把数值扩大一倍,方便前面的存时间
ADDA,#40H;
MOVR1,A;;R1存储数据要输向的地址
MOVA,R3
MOV@R1,A;红灯的时间十位存于58H,黄5AH,绿5CH,次数5EH
CPL7DH;
ACALLDELAY;延时1秒,防止重复计入一个输入
AJMPKC0;继续扫描,等待输入个位值
TN2:
MOVB,A;判断键值
MOVDPTR,#1000H;
MOVR4,#0FFH;
TN20:
JNBP3.4,Z3
INCR4
MOVA,R4
MOVCA,@A+DPTR;
CJNEA,B,TN20
MOVA,R4;R3值为按键代表的值(0-9)
MOVDPTR,#2000H
MOVCA,@A+DPTR;
MOVP0,A;显示输入的时间值
MOVA,R2
RLA
ADDA,#40H
MOVR1,A
INCR1
MOVA,R4
MOV@R1,A;红灯的时间个位存于59H,黄5BH,绿5DH,次数5FH
CPL7DH;
ACALLDELAY;延时1秒,防止重复计入一个输入
LJMPKC0;继续扫描,等待输入十位值
Z3:
MOVP2,R7
LJMPRETURN
JJQK:
MOVP2,#00H
XS:
MOVP0,#0FFH
INCP2
JNBP3.4,Z3;P3.4=0,中断结束
AJMPXS
DLY:
MOV76H,#6;
DLY1:
MOV71H,#0FEH;
DJNZ71H,$;
DJNZ76H,DLY1;晶振频率为11.0592,此循环延时约3.33ms
RET
DELAY:
MOV72H,#100
DELAY1:
MOV73H,#20
DELAY2:
MOV74H,#0FFH
DJNZ74H,$
DJNZ73H,DELAY2
DJNZ72H,DELAY1;晶振频率为11.0592,此循环延时约1.116s
RET
RETURN:
RETI
ORG1000H
DB0EEH,0DEH,0BEH,7EH;0-3
DB0EDH,0DDH,0BDH,7DH;4-7
DB0EBH,0DBH,0BBH,7BH;8-B
DB0E7H,0D7H,0B7H,77H;C-F(按键值判断用码)
ORG2000H
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;(0-9的八段码)
ORG210CH
DB77H,66H,7FH,37H;(红R,黄Y,绿B,次数N,共阴)
END
存储单元分配(内部数据存储器RAM)
R1数字键输入数据的地址
R2项目键的值
R3数字键输入值(十位)
R4数字键输入值(个位)
R7时间设置中断时保存P2值
58H59H保存南北方红灯时间36H37H暂存
5AH5BH保存黄灯时间32H33H暂存
5CH5DH保存南北方绿灯时间34H35H暂存
5EH5FH保存循环次数38H39H暂存
60H61H定一秒用循环次数70H暂存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 源程序 代码 存储 单元 分配