前天把 8*8俄罗斯方块程序搞定,今天把俄罗斯方块硬件电路部分搞定。从刚开始没一点思路,到项目全部完成。这几天花费了不少睡觉时间,学了不少东西,两个字:值得。
前天也不知道怎么的,调程序的效率真高,自己都不相信自己了,不到一个小时解决了左右冲突、背景合成、积木旋转、加速下移这些问题。而且在背景合成、积木旋转着两个算法上有自己独有的方法。都比较精简。
搞完了俄罗斯方块,学的东西还真不少啊。
接下来就要准备16*16的俄罗斯方块了,还要制作一个小制作下个星期三要交,还要准备讲课比赛,后天还要考单片机,星期六考英语四级。接下来的几天还真忙啊,也不知道又要加班加到凌晨2点了,昨晚搞到3点现在还没回过神来。累是累了点,不过充实的很啊。
项目阶段,又要抓紧了,做几个得意的东西来,留着做纪念。
- ;功能:俄罗斯方块游戏
- ;P3口实现对LED点阵的动态片选功能
- ;===============================================================
- ;=======================开始初始化==============================
- HANG1 EQU 40H ;第一行数据地址
- HANG2 EQU 41H ;第二行数据地址
- HANG3 EQU 42H ;第三行数据地址
- HANG4 EQU 43H ;第四行数据地址
- HANG5 EQU 44H ;第五行数据地址
- HANG6 EQU 45H ;第六行数据地址
- HANG7 EQU 46H ;第七行数据地址
- HANG8 EQU 47H ;第八行数据地址
- BEIJING1 EQU 48H ;背景第一行数据地址
- BEIJING2 EQU 49H ;背景第二行数据地址
- BEIJING3 EQU 4AH ;背景第三行数据地址
- BEIJING4 EQU 4BH ;背景第四行数据地址
- BEIJING5 EQU 4CH ;背景第五行数据地址
- BEIJING6 EQU 4DH ;背景第六行数据地址
- BEIJING7 EQU 4EH ;背景第七行数据地址
- BEIJING8 EQU 4FH ;背景第八行数据地址
- SHU1 EQU 50H ;保存第一行显示初值地址
- SHU2 EQU 51H ;保存第二行显示初值地址
- SHU3 EQU 52H ;保存第三行显示初值地址
- XIASHU EQU 53H ;下移数据中转地址
- Y_Y EQU 54H ;异地旋转下移Y轴数据地址
- X_X EQU 55H ;异地旋转左、右移X轴数据地址
- CHENG1 EQU 56H ;第一行显示数据保存地址
- CHENG2 EQU 57H ;第二行显示数据保存地址
- CHENG3 EQU 58H ;第三行显示数据保存地址
- CHENG4 EQU 59H ;第四行显示数据保存地址
- CHENG5 EQU 5AH ;第五行显示数据保存地址
- CHENG6 EQU 5BH ;第六行显示数据保存地址
- CHENG7 EQU 5CH ;第七行显示数据保存地址
- CHENG8 EQU 5DH ;第八行显示数据保存地址
- XUAN1 EQU 20H ;第一行寻址旋转
- XUAN2 EQU 21H ;第二行寻址旋转
- XUAN3 EQU 22H ;第三行寻址旋转
- OXUAN EQU 23H ;用来存取旋转溢出数据
- SHUCHU EQU P2 ;定义P0口为输出口
- PIANXUAN EQU P3 ;定义P2口为片选口
- BT BIT 24H.0 ;节拍法标志位
- ANJIAN1 BIT 24H.1 ;异地旋转按键标志位
- ANJIAN2 BIT 24H.2 ;左移按键标志位
- ANJIAN3 BIT 24H.3 ;右移按键标志位
- CHONG BIT 24H.4 ;背景冲突按键标志位
- ;=========================系统程序==============================
- ORG 00H ;程序开始
- LJMP START ;跳到START
- ORG 0BH ;中断定时器0入口地址
- LJMP T0_1 ;跳到定时器0服务程序
- ORG 30H ;入口地址
- START:MOV SP,#70H ;移开指针
- LCALL INIT ;开定时器、开定时器中断
- SETB BT ;中断标志位置一
- CLR ANJIAN1 ;异地旋转按键标志位清0
- CLR ANJIAN2 ;左移按键标志位清0
- CLR ANJIAN3 ;右移按键标志位清0
- CLR CHONG ;冲突标志位清0
- LCALL CHUZHI ;设置移动区初值
- LCALL CHUZHI1 ;设置背景区初值
- CALL SHUJU1 ;保存显示数据
- MOV Y_Y,#00 ;Y轴清0
- MOV X_X,#00 ;X轴清0
- MOV R2,#0
- MOV R3,#0
- ;========================主程序=================================
- MAIN:JNB BT,[ DISCUZ_CODE_1 ]nbsp; ;等待中断
- CLR BT ;中断标志位清0
- LCALL DISPLAY ;移动区显示
- LCALL DISPLAY1 ;背景区显示
- CALL PANANJIAN ;按键判断(异地旋转、左移、右移、加速下移)
- INC R3 ;等待1S时间到来
- CJNE R3,#50,MAIN
- MOV R3,#0
- CALL SHUJU5 ;保存下移前数据到CHENG1-CHENG8中。
- LCALL XIABIANJIE ;判断下移边界,是否下移
- CALL CHONGTU ;判断是否有冲突
- JNB CHONG,MAIN ;没有冲突返回,
- CALL SHUJU6 ;有冲突则取回下移前数据
- CALL HEBEIJING ;调用背景合成(背景合成、消行判断及消行、产生随机数)
- JMP MAIN
- ;=====================按键判断子程序============================
- ;输入:P1.0、P1.1、P1.2、P1.3
- ;输出:无
- ;实现的功能:判断左移、右移、异地旋转、加速下移按键是否按下,影响标志位ANJIAN1、ANJIAN2、ANJIAN3.
- ;===============================================================
- PANANJIAN:JB P1.0,TAIQI1 ;没有按键按下继续判断,有按键按下则往下执行
- JB ANJIAN1,TAIQI1 ;ANJIAN1=1,继续判断,消抖作用
- SETB ANJIAN1 ;异地旋转标志位置一
-
- CALL SHUJU5
- CLR C
- CALL YIDIXUANZHUAN ;有键按下则旋转。
- CALL CHONGTU
- JNB CHONG,JIXU3
- CALL SHUJU6
- JMP TAIQI1
- JIXU3:JNC TAIQI1
- CALL SHUJU6
- TAIQI1:JNB P1.0,PANZUO ;没键按下判断下一个按键是否按下
- CLR ANJIAN1 ;异地旋转标志位1清0
- PANZUO:JB P1.1,TAIQI2
- JB ANJIAN2,TAIQI2
- SETB ANJIAN2
- CALL SHUJU5
- CALL PANZUOYI ;调用判断左移字程序(左移是否碰壁、是否到达边界、是否与背景冲突)
- TAIQI2:JNB P1.1,PANYOU
- OUT2:CLR ANJIAN2
- PANYOU:JB P1.2,TAIQI3
- JB ANJIAN3,TAIQI3
- SETB ANJIAN3
- CALL PANYOUYI ;调用判断右移字程序(右移是否碰壁、是否到达边界、是否与背景冲突)
- TAIQI3:JNB P1.2,PANSU
- OUT1:CLR ANJIAN3
- PANSU:JB P1.3, OUT ;判断加速按键是否按下
- CALL JIASU ;加速按键按下则图形加速下移(下移是否触底、是否与背景冲突)
- OUT:RET
- ;=====================加速下移子程序============================
- ;输入:无
- ;输出:无
- ;实现的功能:实现图形加速下移
- ;===============================================================
- JIASU:CALL SHUJU5
- MOV R6,#10
- DJNZ R6,$
- CALL XIABIANJIE
- CALL CHONGTU
- JNB CHONG,OUT
- CALL SHUJU6
- CALL HEBEIJING
- RET
- ;==================背景合成及随机数子程序=======================
- ;输入:无
- ;输出:无
- ;实现的功能:实现背景合成、消行、产生随机数
- ;===============================================================
- HEBEIJING:CALL HECHENG
- CALL XIAOHANG
- CALL QINGLING
- CALL SUIJI
- LCALL SHUJU4
- LCALL SHUJU2
- MOV Y_Y,#00
- MOV X_X,#00
- RET
- ;==================左移边界判断子程序===========================
- ;输入:无
- ;输出:无
- ;实现的功能:判断左移进位是否为1
- ;===============================================================
- PANZUOYI:MOV R0,#HANG1 ;判断左移边界
- CC:MOV A,@R0
- RLC A
- JC OUT2
- INC R0
- CJNE R0,#BEIJING1,CC
- CALL SHUJU5
- CALL ZUOYI
- INC X_X
- CALL CHONGTU
- JB CHONG,TT
- RET
- TT:CALL SHUJU6
- RET
- ;==================右移边界判断子程序===========================
- ;输入:无
- ;输出:无
- ;实现的功能:判断右移进位是否为1
- ;===============================================================
- PANYOUYI:MOV R0,#HANG1 ;判断右移边界
- CCC:MOV A,@R0
- RRC A
- JC OUT1
- INC R0
- CJNE R0,#BEIJING1,CCC
- CALL SHUJU5
- CALL YOUYI
- DEC X_X
- CALL CHONGTU
- JB CHONG,EE
- RET
- EE:CALL SHUJU6
- RET
- ;==================判断下移边界子程序===========================
- ;输入:无
- ;输出:无
- ;实现的功能:判断43H-47H内容是否为0
- ;===============================================================
- XIABIANJIE:MOV R0,#HANG8
- CJNE @R0,#00,HE
- CALL XIAYI
- INC Y_Y ;下移Y轴加一
- RET
- HE:CALL HEBEIJING
- JMP MAIN
- RET
- ;=======================下移子程序=============================
- ;输入:无
- ;输出:无
- ;实现的功能:实现定图形下移功能
- ;===============================================================
- XIAYI:MOV XIASHU,HANG8
- MOV HANG8,HANG7
- MOV HANG7,HANG6
- MOV HANG6,HANG5
- MOV HANG5,HANG4
- MOV HANG4,HANG3
- MOV HANG3,HANG2
- MOV HANG2,HANG1
- MOV HANG1,XIASHU
- RET
- ;======================消行子程序===============================
- ;输入:无
- ;输出:无
- ;实现的功能:把合成后背景区中全亮的行消除掉。
- ;===============================================================
- XIAOHANG:MOV R5,#00
- MOV R0,#BEIJING8
- LAN6:MOV A,@R0
- CPL A
- JZ XIAOCHU
- DEC R0
- INC R5
- CJNE R0,#47H,LAN6
- RET
- XIAOCHU:MOV @R0,#00 ;消除该行
- X_H:MOV A,R0
- MOV R1,A
- DEC R1
- MOV A,@R1
- MOV @R0,A ;把上一行的数据放到下一行
- DEC R0
- CJNE R0,#48H,X_H ;继续下移
- CJNE R5,#07,XIAOHANG ;看是否还有行没有消除掉,有的话继续判断,达到全部消除。
- RET
- ;=====================背景合成子程序============================
- ;输入:无
- ;输出:无
- ;实现的功能:把背景区和移动区合成背景区
- ;===============================================================
- HECHENG:MOV R0,#HANG8
- MOV R1,#BEIJING8
- LAN4:CJNE R0,#3FH,LAN5
- JMP YY
- LAN5:MOV A,@R1
- ORL A,@R0
- MOV @R1,A
- DEC R0
- DEC R1
- JMP LAN4
- YY:RET
- ;======================判断冲突子程序===========================
- ;输入:无
- ;输出:无
- ;实现的功能:判断背景区与移动区是否重叠,影响标志位CHONG。
- ;===============================================================
- CHONGTU:MOV R0,#HANG1
- MOV R1,#BEIJING1
- LAN:MOV A,@R0
- ANL A,@R1
- JZ LAN1
- SETB CHONG
- RET
- LAN1:INC R0
- INC R1
- CJNE R0,#BEIJING1,LAN
- MOV A, BEIJING1
- ANL A,HANG1
- CJNE A,#00,LAN
- MOV A, BEIJING2
- ANL A,HANG2
- CJNE A,#00,LAN
- MOV A, BEIJING3
- ANL A,HANG3
- CJNE A,#00,LAN
- MOV A, BEIJING4
- ANL A,HANG4
- CJNE A,#00,LAN
- MOV A, BEIJING5
- ANL A,HANG5
- CJNE A,#00,LAN
- MOV A, BEIJING6
- ANL A,HANG6
- CJNE A,#00,LAN
- MOV A, BEIJING7
- ANL A,HANG7
- CJNE A,#00,LAN
- MOV A, BEIJING8
- ANL A,HANG8
- CJNE A,#00,LAN
- CLR CHONG
- RET
- ;=======================左移子程序==============================
- ;输入:无
- ;输出:无
- ;实现的功能:实现定图形左移功能
- ;===============================================================
- ZUOYI:MOV A,HANG1
- RL A
- MOV HANG1,A
- MOV A,HANG2
- RL A
- MOV HANG2,A
- MOV A,HANG3
- RL A
- MOV HANG3,A
- MOV A,HANG4
- RL A
- MOV HANG4,A
- MOV A,HANG5
- RL A
- MOV HANG5,A
- MOV A,HANG6
- RL A
- MOV HANG6,A
- MOV A,HANG7
- RL A
- MOV HANG7,A
- MOV A,HANG8
- RL A
- MOV HANG8,A
- RET
- ;========================右移子程序=============================
- ;输入:无
- ;输出:无
- ;实现的功能:实现图形右移功能
- ;===============================================================
- YOUYI:MOV A,HANG1
- RR A
- MOV HANG1,A
- MOV A,HANG2
- RR A
- MOV HANG2,A
- MOV A,HANG3
- RR A
- MOV HANG3,A
- MOV A,HANG4
- RR A
- MOV HANG4,A
- MOV A,HANG5
- RR A
- MOV HANG5,A
- MOV A,HANG6
- RR A
- MOV HANG6,A
- MOV A,HANG7
- RR A
- MOV HANG7,A
- MOV A,HANG8
- RR A
- MOV HANG8,A
- RET
- ;===================异地旋转子程序==============================
- ;输入:
- ;输出:
- ;实现的功能:如果SHIJIAN=1就旋转,等于0不旋转。讲HANG1-HANG8的内容,
- ;送到旋转区进行旋转,同时将HANG线的数据进行保存。
- ;===============================================================
- YIDIXUANZHUAN:CALL QINGLING
- CALL SHUJU3
- LCALL JISUAN
- CALL SHUJU2
- CALL TIHUAN
- RET
- ;=====================数据替换子程序============================
- ;输入:
- ;输出:
- ;实现的功能:把图形当前数据替换成旋转后的数据。
- ;===============================================================
- TIHUAN:MOV R1,X_X
- JIXU1:CJNE R1,#00,BIANHUA1
- JMP BIANHUA2
- BIANHUA1:MOV A,XUAN1
- RL A
- MOV XUAN1,A
- MOV A,XUAN2
- RL A
- MOV XUAN2,A
- MOV A,XUAN3
- RL A
- MOV XUAN3,A
- DEC R1
- JMP JIXU1
- BIANHUA2:MOV A,#HANG1
- ADD A,Y_Y
- MOV R1,A
- MOV @R1,XUAN1
- MOV A,#HANG2
- ADD A,Y_Y
- MOV R1,A
- MOV @R1,XUAN2
- MOV A,#HANG3
- ADD A,Y_Y
- MOV R1,A
- MOV @R1,XUAN3
- RET
- ;========================计算子程序=============================
- ;输入:
- ;输出:
- ;实现的功能:实现数据进行旋转,实现图形旋转功能。
- ;===============================================================
- JISUAN:MOV C,XUAN3.0 ;将3存起来、外旋转
- MOV OXUAN.0,C
- MOV C,XUAN1.0
- MOV XUAN3.0,C
- MOV C,XUAN1.2
- MOV XUAN1.0,C
- MOV C,XUAN3.2
- MOV XUAN1.2,C
- MOV C,OXUAN.0
- MOV XUAN3.2,C
- MOV C,XUAN2.0 ;将2存起来、内旋转
- MOV OXUAN.1,C
- MOV C,XUAN1.1
- MOV XUAN2.0,C
- MOV C,XUAN2.2
- MOV XUAN1.1,C
- MOV C,XUAN3.1
- MOV XUAN2.2,C
- MOV C,OXUAN.1
- MOV XUAN3.1,C
- RET
- ;====================产生随机数子程序===========================
- ;输入:无
- ;输出:无
- ;实现的功能:DPH中的数据转化为积木图形数据。
- ;===============================================================
- SUIJI:MOV A,TH0
- ANL A,#07H
- RL A
- MOV DPTR,#TAB
- JMP @A+DPTR
- TAB:AJMP SUB0
- AJMP SUB1
- AJMP SUB2
- AJMP SUB3
- AJMP SUB4
- AJMP SUB5
- AJMP SUB6
- AJMP SUB7
- AJMP SUB8
- SUB0:MOV XUAN1,#07H
- MOV XUAN2,#01H
- MOV XUAN3,#00H
- RET
- SUB1:MOV XUAN1,#02H
- MOV XUAN2,#03H
- MOV XUAN3,#01H
- RET
- SUB2:
- MOV XUAN1,#02H
- MOV XUAN2,#03H
- MOV XUAN3,#02H
- RET
- SUB3:MOV XUAN1,#00H
- MOV XUAN2,#07H
- MOV XUAN3,#00H
- RET
- SUB4:MOV XUAN1,#01H
- MOV XUAN2,#03H
- MOV XUAN3,#02H
- RET
- SUB5:MOV XUAN1,#01H
- MOV XUAN2,#07H
- MOV XUAN3,#00H
- RET
- SUB6:MOV XUAN1,#00H
- MOV XUAN2,#01H
- MOV XUAN3,#07H
- RET
- SUB7:MOV XUAN1,#02H
- MOV XUAN2,#07H
- MOV XUAN3,#00H
- SUB8:MOV XUAN1,#03H
- MOV XUAN2,#03H
- MOV XUAN3,#00H
- RET
- ;=======================显示子程序==============================
- ;输入:"40H-47H"
- ;输出:P2口
- ;实现的功能:显示40H-48H的内容。
- ;===============================================================
- DISPLAY:MOV SHUCHU,HANG1
- MOV PIANXUAN,#0FEH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG2
- MOV PIANXUAN,#0FDH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG3
- MOV PIANXUAN,#0FBH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG4
- MOV PIANXUAN,#0F7H
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG5
- MOV PIANXUAN,#0EFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG6
- MOV PIANXUAN,#0DFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG7
- MOV PIANXUAN,#0BFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,HANG8
- MOV PIANXUAN,#7FH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- RET
- ;=======================显示子程序==============================
- ;输入:"48H-4FH"
- ;输出:P2口
- ;实现的功能:显示48H-4FHH的内容。
- ;===============================================================
- DISPLAY1:MOV SHUCHU,BEIJING1
- MOV PIANXUAN,#0FEH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING2
- MOV PIANXUAN,#0FDH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING3
- MOV PIANXUAN,#0FBH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING4
- MOV PIANXUAN,#0F7H
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING5
- MOV PIANXUAN,#0EFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING6
- MOV PIANXUAN,#0DFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING7
- MOV PIANXUAN,#0BFH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- MOV SHUCHU,BEIJING8
- MOV PIANXUAN,#7FH
- LCALL DELAY
- MOV PIANXUAN,#0FFH
- RET
- ;================移动区图形初值子程序===========================
- ;输入:"40H,41H,42H,43H,44H,45H,46H,47H"
- ;输出:无
- ;实现的功能:设置移动区数据初值
- ;===============================================================
- CHUZHI:MOV HANG1,#02H ;开始显示的图形第一行发的数据
- MOV HANG2,#07H ;开始显示的图形第二行发的数据
- MOV HANG3,#00H ;开始显示的图形第三行发的数据
- MOV HANG4,#00H
- MOV HANG5,#00H
- MOV HANG6,#00H
- MOV HANG7,#00H
- MOV HANG8,#00H
- RET
- ;====================背景区初值子程序===========================
- ;输入:"48H,49H,4AH,4BH,4CH,4DH,4EH,4FH,"
- ;输出:无
- ;实现的功能:设置背景区数据初值
- ;===============================================================
- CHUZHI1:MOV BEIJING1,#00H
- MOV BEIJING2,#00H
- MOV BEIJING3,#00H
- MOV BEIJING4,#00H
- MOV BEIJING5,#00H
- MOV BEIJING6,#00H
- MOV BEIJING7,#00H
- MOV BEIJING8,#00H
- RET
- ;=======================复位子程序==============================
- ;输入:40H-47H
- ;输出:无
- ;实现的功能:把CHULI1-CHULI8的数据清零。
- ;===============================================================
- QINGLING:MOV HANG1,#00H ;数据清零
- MOV HANG2,#00H
- MOV HANG3,#00H
- MOV HANG4,#00H
- MOV HANG5,#00H
- MOV HANG6,#00H
- MOV HANG7,#00H
- MOV HANG8,#00H
- RET
- ;====================数据保存1子程序============================
- ;输入:50H-52H
- ;输出:
- ;实现的功能:把40H-42H的数据保存到50H-52H中。
- ;===============================================================
- SHUJU1:MOV SHU1,HANG1 ;保存第一行数据
- MOV SHU2,HANG2 ;保存第一行数据
- MOV SHU3,HANG3 ;保存第一行数据
- RET
- ;====================数据保存2子程序============================
- ;输入:50H-52
- ;输出:
- ;实现的功能:把旋转后的数据保存到50H-52H中。
- ;===============================================================
- SHUJU2:MOV SHU1,XUAN1 ;保存旋转后第一行的数据
- MOV SHU2,XUAN2 ;保存旋转后第二行的数据
- MOV SHU3,XUAN3 ;保存旋转后第三行的数据
- RET
- ;====================数据保存3子程序============================
- ;输入:20H-22H
- ;输出:
- ;实现的功能:把50H-52H中的数据放到20H-22H中,放到寻址区。
- ;===============================================================
- SHUJU3:MOV XUAN1,SHU1 ;把保存好的第一行数据转移到寻址区
- MOV XUAN2,SHU2 ;把保存好的第二行数据转移到寻址区
- MOV XUAN3,SHU3 ;把保存好的第三行数据转移到寻址区
- RET
- ;====================数据保存4子程序============================
- ;输入:40H-42H
- ;输出:
- ;实现的功能:把旋转后的数据保存到50H-52H中。
- ;===============================================================
- SHUJU4:MOV HANG1,XUAN1 ;把寻址区的第一行数据取回
- MOV HANG2,XUAN2 ;把寻址区的第二行数据取回
- MOV HANG3,XUAN3 ;把寻址区的第三行数据取回
- RET
- ;====================数据保存5子程序============================
- ;输入:56-5DH
- ;输出:
- ;实现的功能:把40H-47H中的数据保存到56H-5DH中。
- ;===============================================================
- SHUJU5:MOV CHENG1,HANG1 ;把数据保存起来
- MOV CHENG2,HANG2
- MOV CHENG3,HANG3
- MOV CHENG4,HANG4
- MOV CHENG5,HANG5
- MOV CHENG6,HANG6
- MOV CHENG7,HANG7
- MOV CHENG8,HANG8
- RET
- ;====================数据保存6子程序============================
- ;输入:
- ;输出:
- ;实现的功能:把56H-5DH的数据保存到40H-47H中。
- ;===============================================================
- SHUJU6:MOV HANG1,CHENG1 ;把原来保存的数据取回
- MOV HANG2,CHENG2
- MOV HANG3,CHENG3
- MOV HANG4,CHENG4
- MOV HANG5,CHENG5
- MOV HANG6,CHENG6
- MOV HANG7,CHENG7
- MOV HANG8,CHENG8
- RET
- ;====================定时中断0服务子程序========================
- ;输入:无
- ;输出:无
- ;实现的功能:实现定时20MS,影响标中断志位BIT
- ;===============================================================
- T0_1:MOV TL0,#0E0H ;设置定时初值
- MOV TH0,#0B1H
- SETB BT ;定时标志位清0
- RETI
- ;========================中断设置子程序=========================
- ;输入:无
- ;输出:无
- ;实现的功能:初始化设置定时器,设置初值
- ;===============================================================
- INIT:MOV TMOD,#01H ;定时器0工作方式1
- MOV TL0,#0E0H ;设置定时初值
- MOV TH0,#0B1H
- MOV IE,#82H ;开定时器中断0
- SETB TR0 ;开定时器0
- RET
- ;==========================延时子程序===========================
- ;输入;无
- ;输出: 无
- ;实现的功能:延时一段时间
- ;===============================================================
- DELAY:
- L6:MOV R6,#30
- L7:MOV R7,#20
- L8:DJNZ R7,L8
- DJNZ R6,L7
- RET
- ;=========================程序结束=============================
- END
复制代码
|