找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4845|回复: 6
打印 上一主题 下一主题
收起左侧

俄罗斯方块程序

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-27 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        前天把 8*8俄罗斯方块程序搞定,今天把俄罗斯方块硬件电路部分搞定。从刚开始没一点思路,到项目全部完成。这几天花费了不少睡觉时间,学了不少东西,两个字:值得。
        前天也不知道怎么的,调程序的效率真高,自己都不相信自己了,不到一个小时解决了左右冲突、背景合成、积木旋转、加速下移这些问题。而且在背景合成、积木旋转着两个算法上有自己独有的方法。都比较精简。
         搞完了俄罗斯方块,学的东西还真不少啊。
         接下来就要准备16*16的俄罗斯方块了,还要制作一个小制作下个星期三要交,还要准备讲课比赛,后天还要考单片机,星期六考英语四级。接下来的几天还真忙啊,也不知道又要加班加到凌晨2点了,昨晚搞到3点现在还没回过神来。累是累了点,不过充实的很啊。
       项目阶段,又要抓紧了,做几个得意的东西来,留着做纪念。

  1. ;功能:俄罗斯方块游戏
  2. ;P3口实现对LED点阵的动态片选功能
  3. ;===============================================================
  4. ;=======================开始初始化==============================
  5.         HANG1    EQU    40H    ;第一行数据地址
  6.   HANG2    EQU    41H    ;第二行数据地址
  7.   HANG3    EQU    42H    ;第三行数据地址
  8.   HANG4    EQU    43H    ;第四行数据地址
  9.   HANG5    EQU    44H    ;第五行数据地址
  10.   HANG6    EQU    45H    ;第六行数据地址
  11.   HANG7    EQU    46H    ;第七行数据地址
  12.   HANG8    EQU    47H    ;第八行数据地址
  13.   BEIJING1 EQU    48H    ;背景第一行数据地址
  14.   BEIJING2 EQU    49H    ;背景第二行数据地址
  15.   BEIJING3 EQU    4AH    ;背景第三行数据地址
  16.   BEIJING4 EQU    4BH    ;背景第四行数据地址
  17.   BEIJING5 EQU    4CH    ;背景第五行数据地址
  18.   BEIJING6 EQU    4DH    ;背景第六行数据地址
  19.   BEIJING7 EQU    4EH    ;背景第七行数据地址
  20.   BEIJING8 EQU    4FH    ;背景第八行数据地址
  21.   SHU1     EQU    50H    ;保存第一行显示初值地址
  22.   SHU2     EQU    51H    ;保存第二行显示初值地址
  23.   SHU3     EQU    52H    ;保存第三行显示初值地址
  24.   XIASHU   EQU    53H    ;下移数据中转地址
  25.   Y_Y      EQU    54H             ;异地旋转下移Y轴数据地址
  26.   X_X   EQU    55H             ;异地旋转左、右移X轴数据地址
  27.   CHENG1   EQU    56H    ;第一行显示数据保存地址
  28.   CHENG2   EQU    57H    ;第二行显示数据保存地址
  29.   CHENG3   EQU    58H    ;第三行显示数据保存地址
  30.   CHENG4   EQU    59H    ;第四行显示数据保存地址
  31.   CHENG5   EQU    5AH    ;第五行显示数据保存地址
  32.   CHENG6   EQU    5BH    ;第六行显示数据保存地址
  33.   CHENG7   EQU    5CH    ;第七行显示数据保存地址
  34.   CHENG8   EQU    5DH    ;第八行显示数据保存地址      
  35.   XUAN1    EQU    20H    ;第一行寻址旋转
  36.   XUAN2    EQU    21H    ;第二行寻址旋转
  37.   XUAN3    EQU    22H    ;第三行寻址旋转
  38.   OXUAN    EQU    23H    ;用来存取旋转溢出数据
  39.         SHUCHU   EQU    P2             ;定义P0口为输出口
  40.   PIANXUAN EQU    P3    ;定义P2口为片选口
  41.   BT      BIT    24H.0   ;节拍法标志位
  42.   ANJIAN1  BIT    24H.1   ;异地旋转按键标志位
  43.   ANJIAN2  BIT    24H.2   ;左移按键标志位
  44.   ANJIAN3  BIT    24H.3   ;右移按键标志位
  45.   CHONG    BIT    24H.4   ;背景冲突按键标志位
  46. ;=========================系统程序==============================        
  47.      ORG    00H      ;程序开始
  48.         LJMP START   ;跳到START
  49.      ORG    0BH       ;中断定时器0入口地址
  50.      LJMP   T0_1   ;跳到定时器0服务程序
  51.                  ORG    30H          ;入口地址            
  52.            START:MOV    SP,#70H   ;移开指针
  53.            LCALL  INIT   ;开定时器、开定时器中断
  54.         SETB   BT         ;中断标志位置一
  55.      CLR    ANJIAN1   ;异地旋转按键标志位清0
  56.      CLR    ANJIAN2   ;左移按键标志位清0
  57.      CLR    ANJIAN3   ;右移按键标志位清0
  58.      CLR    CHONG   ;冲突标志位清0
  59.      LCALL  CHUZHI   ;设置移动区初值
  60.      LCALL  CHUZHI1   ;设置背景区初值
  61.      CALL   SHUJU1   ;保存显示数据
  62.      MOV    Y_Y,#00   ;Y轴清0
  63.      MOV    X_X,#00   ;X轴清0
  64.              MOV    R2,#0
  65.      MOV    R3,#0
  66. ;========================主程序=================================        
  67.    MAIN:JNB    BT,[        DISCUZ_CODE_1        ]nbsp;  ;等待中断
  68.                  CLR    BT    ;中断标志位清0            
  69.      LCALL  DISPLAY   ;移动区显示
  70.      LCALL  DISPLAY1  ;背景区显示   
  71.      CALL   PANANJIAN  ;按键判断(异地旋转、左移、右移、加速下移)
  72.      INC    R3    ;等待1S时间到来
  73.            CJNE   R3,#50,MAIN
  74.      MOV    R3,#0         
  75.      CALL  SHUJU5   ;保存下移前数据到CHENG1-CHENG8中。
  76.      LCALL  XIABIANJIE  ;判断下移边界,是否下移   
  77.      CALL   CHONGTU   ;判断是否有冲突
  78.      JNB    CHONG,MAIN   ;没有冲突返回,
  79.      CALL   SHUJU6   ;有冲突则取回下移前数据
  80.      CALL  HEBEIJING  ;调用背景合成(背景合成、消行判断及消行、产生随机数)
  81.      JMP   MAIN
  82. ;=====================按键判断子程序============================
  83. ;输入:P1.0、P1.1、P1.2、P1.3
  84. ;输出:无
  85. ;实现的功能:判断左移、右移、异地旋转、加速下移按键是否按下,影响标志位ANJIAN1、ANJIAN2、ANJIAN3.
  86. ;===============================================================
  87.     PANANJIAN:JB     P1.0,TAIQI1  ;没有按键按下继续判断,有按键按下则往下执行
  88.      JB     ANJIAN1,TAIQI1 ;ANJIAN1=1,继续判断,消抖作用
  89.      SETB   ANJIAN1   ;异地旋转标志位置一
  90.    
  91.                  CALL   SHUJU5
  92.      CLR    C   
  93.      CALL   YIDIXUANZHUAN ;有键按下则旋转。
  94.      CALL   CHONGTU
  95.      JNB    CHONG,JIXU3
  96.      CALL   SHUJU6
  97.      JMP    TAIQI1
  98.      JIXU3:JNC    TAIQI1
  99.      CALL   SHUJU6
  100.     TAIQI1:JNB    P1.0,PANZUO  ;没键按下判断下一个按键是否按下
  101.      CLR    ANJIAN1   ;异地旋转标志位1清0  
  102.      PANZUO:JB     P1.1,TAIQI2  
  103.      JB     ANJIAN2,TAIQI2
  104.                  SETB   ANJIAN2  
  105.      CALL   SHUJU5
  106.      CALL   PANZUOYI   ;调用判断左移字程序(左移是否碰壁、是否到达边界、是否与背景冲突)
  107.     TAIQI2:JNB    P1.1,PANYOU
  108.       OUT2:CLR    ANJIAN2
  109.     PANYOU:JB     P1.2,TAIQI3  
  110.      JB     ANJIAN3,TAIQI3
  111.      SETB   ANJIAN3
  112.      CALL   PANYOUYI    ;调用判断右移字程序(右移是否碰壁、是否到达边界、是否与背景冲突)
  113.     TAIQI3:JNB    P1.2,PANSU
  114.    OUT1:CLR    ANJIAN3
  115.      PANSU:JB     P1.3, OUT   ;判断加速按键是否按下
  116.            CALL   JIASU    ;加速按键按下则图形加速下移(下移是否触底、是否与背景冲突)
  117.     OUT:RET
  118. ;=====================加速下移子程序============================
  119. ;输入:无
  120. ;输出:无
  121. ;实现的功能:实现图形加速下移
  122. ;===============================================================
  123.       JIASU:CALL   SHUJU5
  124.            MOV    R6,#10
  125.      DJNZ   R6,$
  126.            CALL   XIABIANJIE
  127.      CALL   CHONGTU
  128.      JNB    CHONG,OUT
  129.      CALL   SHUJU6
  130.      CALL   HEBEIJING
  131.      RET
  132. ;==================背景合成及随机数子程序=======================
  133. ;输入:无
  134. ;输出:无
  135. ;实现的功能:实现背景合成、消行、产生随机数
  136. ;===============================================================
  137.     HEBEIJING:CALL   HECHENG
  138.      CALL   XIAOHANG
  139.      CALL   QINGLING
  140.      CALL   SUIJI
  141.      LCALL SHUJU4
  142.      LCALL SHUJU2
  143.      MOV   Y_Y,#00
  144.         MOV   X_X,#00
  145.         RET        
  146. ;==================左移边界判断子程序===========================
  147. ;输入:无
  148. ;输出:无
  149. ;实现的功能:判断左移进位是否为1
  150. ;===============================================================
  151.   PANZUOYI:MOV   R0,#HANG1   ;判断左移边界
  152.      CC:MOV   A,@R0
  153.            RLC   A
  154.      JC    OUT2
  155.      INC   R0
  156.      CJNE  R0,#BEIJING1,CC
  157.      CALL  SHUJU5
  158.      CALL  ZUOYI
  159.      INC   X_X  
  160.      CALL  CHONGTU
  161.      JB    CHONG,TT
  162.      RET
  163.      TT:CALL  SHUJU6
  164.         RET  
  165. ;==================右移边界判断子程序===========================
  166. ;输入:无
  167. ;输出:无
  168. ;实现的功能:判断右移进位是否为1
  169. ;===============================================================  
  170.   PANYOUYI:MOV   R0,#HANG1   ;判断右移边界
  171.     CCC:MOV   A,@R0
  172.      RRC   A
  173.      JC    OUT1
  174.      INC   R0
  175.      CJNE  R0,#BEIJING1,CCC
  176.      CALL  SHUJU5
  177.      CALL  YOUYI
  178.      DEC   X_X
  179.      CALL  CHONGTU
  180.      JB   CHONG,EE
  181.      RET
  182.      EE:CALL  SHUJU6
  183.      RET
  184. ;==================判断下移边界子程序===========================
  185. ;输入:无
  186. ;输出:无
  187. ;实现的功能:判断43H-47H内容是否为0
  188. ;===============================================================
  189.    XIABIANJIE:MOV   R0,#HANG8
  190.         CJNE  @R0,#00,HE
  191.      CALL  XIAYI
  192.      INC   Y_Y     ;下移Y轴加一
  193.         RET
  194.      HE:CALL  HEBEIJING  
  195.      JMP   MAIN
  196.      RET                  
  197. ;=======================下移子程序=============================
  198. ;输入:无
  199. ;输出:无
  200. ;实现的功能:实现定图形下移功能
  201. ;===============================================================
  202.      XIAYI:MOV   XIASHU,HANG8
  203.      MOV   HANG8,HANG7
  204.      MOV   HANG7,HANG6
  205.      MOV   HANG6,HANG5
  206.      MOV   HANG5,HANG4
  207.      MOV   HANG4,HANG3
  208.      MOV   HANG3,HANG2
  209.      MOV   HANG2,HANG1
  210.      MOV   HANG1,XIASHU
  211.      RET
  212. ;======================消行子程序===============================
  213. ;输入:无
  214. ;输出:无
  215. ;实现的功能:把合成后背景区中全亮的行消除掉。
  216. ;===============================================================
  217.         XIAOHANG:MOV    R5,#00
  218.      MOV    R0,#BEIJING8
  219.       LAN6:MOV    A,@R0
  220.      CPL    A
  221.      JZ     XIAOCHU
  222.      DEC    R0
  223.      INC    R5
  224.      CJNE   R0,#47H,LAN6
  225.            RET
  226.    XIAOCHU:MOV    @R0,#00       ;消除该行
  227.        X_H:MOV    A,R0
  228.         MOV    R1,A
  229.      DEC    R1
  230.      MOV    A,@R1        
  231.      MOV    @R0,A    ;把上一行的数据放到下一行
  232.      DEC    R0
  233.      CJNE   R0,#48H,X_H   ;继续下移
  234.      CJNE   R5,#07,XIAOHANG  ;看是否还有行没有消除掉,有的话继续判断,达到全部消除。
  235.      RET
  236. ;=====================背景合成子程序============================
  237. ;输入:无
  238. ;输出:无                        
  239. ;实现的功能:把背景区和移动区合成背景区
  240. ;===============================================================
  241.          HECHENG:MOV    R0,#HANG8
  242.               MOV    R1,#BEIJING8
  243.    LAN4:CJNE   R0,#3FH,LAN5
  244.         JMP    YY
  245.    LAN5:MOV    A,@R1
  246.      ORL    A,@R0
  247.      MOV    @R1,A
  248.      DEC    R0
  249.      DEC    R1
  250.      JMP    LAN4
  251.            YY:RET
  252. ;======================判断冲突子程序===========================
  253. ;输入:无
  254. ;输出:无
  255. ;实现的功能:判断背景区与移动区是否重叠,影响标志位CHONG。
  256. ;===============================================================
  257.          CHONGTU:MOV    R0,#HANG1
  258.      MOV    R1,#BEIJING1
  259.     LAN:MOV    A,@R0
  260.         ANL    A,@R1
  261.      JZ     LAN1
  262.      SETB   CHONG
  263.      RET
  264.    LAN1:INC    R0
  265.         INC    R1
  266.      CJNE   R0,#BEIJING1,LAN
  267.      MOV    A, BEIJING1
  268.      ANL    A,HANG1
  269.      CJNE   A,#00,LAN
  270.      MOV    A, BEIJING2
  271.      ANL    A,HANG2
  272.      CJNE   A,#00,LAN
  273.      MOV    A, BEIJING3
  274.      ANL    A,HANG3
  275.      CJNE   A,#00,LAN
  276.      MOV    A, BEIJING4
  277.      ANL    A,HANG4
  278.      CJNE   A,#00,LAN
  279.      MOV    A, BEIJING5
  280.      ANL    A,HANG5
  281.      CJNE   A,#00,LAN
  282.      MOV    A, BEIJING6
  283.      ANL    A,HANG6
  284.      CJNE   A,#00,LAN
  285.      MOV    A, BEIJING7
  286.      ANL    A,HANG7
  287.      CJNE   A,#00,LAN
  288.      MOV    A, BEIJING8
  289.      ANL    A,HANG8
  290.      CJNE   A,#00,LAN
  291.      CLR    CHONG
  292.            RET
  293. ;=======================左移子程序==============================
  294. ;输入:无
  295. ;输出:无
  296. ;实现的功能:实现定图形左移功能
  297. ;===============================================================
  298.      ZUOYI:MOV   A,HANG1
  299.            RL    A
  300.      MOV   HANG1,A
  301.      MOV   A,HANG2
  302.            RL    A
  303.      MOV   HANG2,A
  304.      MOV   A,HANG3
  305.            RL    A
  306.      MOV   HANG3,A        
  307.      MOV   A,HANG4
  308.            RL    A
  309.      MOV   HANG4,A
  310.      MOV   A,HANG5
  311.            RL    A
  312.      MOV   HANG5,A
  313.      MOV   A,HANG6
  314.            RL    A
  315.      MOV   HANG6,A
  316.      MOV   A,HANG7
  317.            RL    A
  318.      MOV   HANG7,A
  319.      MOV   A,HANG8
  320.            RL    A
  321.      MOV   HANG8,A
  322.      RET
  323. ;========================右移子程序=============================
  324. ;输入:无
  325. ;输出:无
  326. ;实现的功能:实现图形右移功能
  327. ;===============================================================
  328.      YOUYI:MOV   A,HANG1
  329.            RR    A
  330.      MOV   HANG1,A
  331.      MOV   A,HANG2
  332.            RR    A
  333.      MOV   HANG2,A
  334.      MOV   A,HANG3
  335.            RR    A
  336.      MOV   HANG3,A
  337.      MOV   A,HANG4
  338.            RR    A
  339.      MOV   HANG4,A
  340.      MOV   A,HANG5
  341.            RR    A
  342.      MOV   HANG5,A
  343.      MOV   A,HANG6
  344.            RR    A
  345.      MOV   HANG6,A
  346.      MOV   A,HANG7
  347.            RR    A
  348.      MOV   HANG7,A
  349.      MOV   A,HANG8
  350.            RR    A
  351.      MOV   HANG8,A   
  352.      RET         
  353. ;===================异地旋转子程序==============================
  354. ;输入:
  355. ;输出:
  356. ;实现的功能:如果SHIJIAN=1就旋转,等于0不旋转。讲HANG1-HANG8的内容,
  357. ;送到旋转区进行旋转,同时将HANG线的数据进行保存。
  358. ;===============================================================      
  359.    YIDIXUANZHUAN:CALL   QINGLING
  360.      CALL   SHUJU3
  361.      LCALL  JISUAN
  362.      CALL   SHUJU2
  363.      CALL   TIHUAN
  364.               RET
  365. ;=====================数据替换子程序============================
  366. ;输入:
  367. ;输出:
  368. ;实现的功能:把图形当前数据替换成旋转后的数据。
  369. ;===============================================================
  370.     TIHUAN:MOV   R1,X_X
  371.      JIXU1:CJNE  R1,#00,BIANHUA1
  372.      JMP   BIANHUA2  
  373.      BIANHUA1:MOV   A,XUAN1
  374.      RL    A
  375.      MOV   XUAN1,A
  376.      MOV   A,XUAN2
  377.      RL    A
  378.      MOV   XUAN2,A
  379.      MOV   A,XUAN3
  380.      RL    A
  381.      MOV   XUAN3,A
  382.      DEC   R1
  383.      JMP   JIXU1
  384.   BIANHUA2:MOV    A,#HANG1
  385.            ADD    A,Y_Y
  386.      MOV    R1,A
  387.      MOV    @R1,XUAN1
  388.      MOV    A,#HANG2
  389.            ADD    A,Y_Y
  390.      MOV    R1,A
  391.      MOV    @R1,XUAN2
  392.      MOV    A,#HANG3
  393.            ADD    A,Y_Y
  394.      MOV    R1,A
  395.      MOV    @R1,XUAN3  
  396.            RET
  397. ;========================计算子程序=============================
  398. ;输入:
  399. ;输出:
  400. ;实现的功能:实现数据进行旋转,实现图形旋转功能。
  401. ;===============================================================
  402.     JISUAN:MOV C,XUAN3.0      ;将3存起来、外旋转
  403.            MOV    OXUAN.0,C         
  404.         MOV    C,XUAN1.0
  405.      MOV    XUAN3.0,C
  406.      MOV    C,XUAN1.2
  407.      MOV    XUAN1.0,C
  408.      MOV    C,XUAN3.2
  409.      MOV    XUAN1.2,C
  410.      MOV    C,OXUAN.0
  411.      MOV    XUAN3.2,C
  412.      MOV    C,XUAN2.0   ;将2存起来、内旋转
  413.      MOV    OXUAN.1,C
  414.      MOV    C,XUAN1.1
  415.      MOV    XUAN2.0,C
  416.      MOV    C,XUAN2.2
  417.      MOV    XUAN1.1,C
  418.      MOV    C,XUAN3.1
  419.      MOV    XUAN2.2,C
  420.      MOV    C,OXUAN.1
  421.      MOV    XUAN3.1,C               
  422.      RET
  423. ;====================产生随机数子程序===========================
  424. ;输入:无
  425. ;输出:无
  426. ;实现的功能:DPH中的数据转化为积木图形数据。
  427. ;===============================================================
  428.      SUIJI:MOV    A,TH0
  429.            ANL    A,#07H
  430.      RL     A
  431.      MOV    DPTR,#TAB
  432.      JMP    @A+DPTR
  433.     TAB:AJMP   SUB0
  434.      AJMP   SUB1
  435.      AJMP   SUB2
  436.      AJMP   SUB3
  437.      AJMP   SUB4
  438.      AJMP   SUB5
  439.      AJMP   SUB6
  440.      AJMP   SUB7
  441.      AJMP   SUB8
  442.          SUB0:MOV    XUAN1,#07H
  443.      MOV    XUAN2,#01H
  444.      MOV    XUAN3,#00H
  445.      RET
  446.    SUB1:MOV    XUAN1,#02H
  447.      MOV    XUAN2,#03H
  448.      MOV    XUAN3,#01H
  449.      RET
  450.     SUB2:
  451.         MOV    XUAN1,#02H
  452.      MOV    XUAN2,#03H
  453.      MOV    XUAN3,#02H
  454.      RET
  455.    SUB3:MOV    XUAN1,#00H
  456.      MOV    XUAN2,#07H
  457.      MOV    XUAN3,#00H
  458.      RET
  459.    SUB4:MOV    XUAN1,#01H
  460.      MOV    XUAN2,#03H
  461.      MOV    XUAN3,#02H
  462.      RET
  463.    SUB5:MOV    XUAN1,#01H
  464.      MOV    XUAN2,#07H
  465.      MOV    XUAN3,#00H
  466.      RET
  467.    SUB6:MOV    XUAN1,#00H
  468.      MOV    XUAN2,#01H
  469.      MOV    XUAN3,#07H
  470.      RET
  471.    SUB7:MOV    XUAN1,#02H
  472.      MOV    XUAN2,#07H
  473.      MOV    XUAN3,#00H
  474.    SUB8:MOV    XUAN1,#03H
  475.      MOV    XUAN2,#03H
  476.      MOV    XUAN3,#00H   
  477.      RET
  478. ;=======================显示子程序==============================
  479. ;输入:"40H-47H"
  480. ;输出:P2口
  481. ;实现的功能:显示40H-48H的内容。
  482. ;===============================================================            
  483.          DISPLAY:MOV    SHUCHU,HANG1
  484.            MOV    PIANXUAN,#0FEH
  485.      LCALL  DELAY
  486.                  MOV    PIANXUAN,#0FFH
  487.      MOV    SHUCHU,HANG2
  488.            MOV    PIANXUAN,#0FDH
  489.      LCALL  DELAY
  490.      MOV    PIANXUAN,#0FFH
  491.            MOV    SHUCHU,HANG3
  492.            MOV    PIANXUAN,#0FBH
  493.      LCALL  DELAY
  494.      MOV    PIANXUAN,#0FFH
  495.      MOV    SHUCHU,HANG4
  496.            MOV    PIANXUAN,#0F7H
  497.      LCALL  DELAY
  498.      MOV    PIANXUAN,#0FFH
  499.      MOV    SHUCHU,HANG5
  500.            MOV    PIANXUAN,#0EFH
  501.      LCALL  DELAY
  502.                  MOV    PIANXUAN,#0FFH
  503.      MOV    SHUCHU,HANG6
  504.            MOV    PIANXUAN,#0DFH
  505.      LCALL  DELAY
  506.      MOV    PIANXUAN,#0FFH
  507.            MOV    SHUCHU,HANG7
  508.            MOV    PIANXUAN,#0BFH
  509.      LCALL  DELAY
  510.      MOV    PIANXUAN,#0FFH
  511.      MOV    SHUCHU,HANG8
  512.            MOV    PIANXUAN,#7FH
  513.      LCALL  DELAY
  514.      MOV    PIANXUAN,#0FFH
  515.                  RET

  516. ;=======================显示子程序==============================
  517. ;输入:"48H-4FH"
  518. ;输出:P2口
  519. ;实现的功能:显示48H-4FHH的内容。
  520. ;===============================================================            
  521.         DISPLAY1:MOV    SHUCHU,BEIJING1
  522.            MOV    PIANXUAN,#0FEH
  523.      LCALL  DELAY
  524.                  MOV    PIANXUAN,#0FFH
  525.      MOV    SHUCHU,BEIJING2
  526.            MOV    PIANXUAN,#0FDH
  527.      LCALL  DELAY
  528.      MOV    PIANXUAN,#0FFH
  529.            MOV    SHUCHU,BEIJING3
  530.            MOV    PIANXUAN,#0FBH
  531.      LCALL  DELAY
  532.      MOV    PIANXUAN,#0FFH
  533.      MOV    SHUCHU,BEIJING4
  534.            MOV    PIANXUAN,#0F7H
  535.      LCALL  DELAY
  536.      MOV    PIANXUAN,#0FFH
  537.      MOV    SHUCHU,BEIJING5
  538.            MOV    PIANXUAN,#0EFH
  539.      LCALL  DELAY
  540.                  MOV    PIANXUAN,#0FFH
  541.      MOV    SHUCHU,BEIJING6
  542.            MOV    PIANXUAN,#0DFH
  543.      LCALL  DELAY
  544.      MOV    PIANXUAN,#0FFH
  545.            MOV    SHUCHU,BEIJING7
  546.            MOV    PIANXUAN,#0BFH
  547.      LCALL  DELAY
  548.      MOV    PIANXUAN,#0FFH
  549.      MOV    SHUCHU,BEIJING8
  550.            MOV    PIANXUAN,#7FH
  551.      LCALL  DELAY
  552.      MOV    PIANXUAN,#0FFH
  553.                  RET
  554. ;================移动区图形初值子程序===========================
  555. ;输入:"40H,41H,42H,43H,44H,45H,46H,47H"
  556. ;输出:无
  557. ;实现的功能:设置移动区数据初值
  558. ;===============================================================
  559.     CHUZHI:MOV   HANG1,#02H   ;开始显示的图形第一行发的数据
  560.            MOV   HANG2,#07H   ;开始显示的图形第二行发的数据
  561.      MOV   HANG3,#00H   ;开始显示的图形第三行发的数据
  562.      MOV   HANG4,#00H      
  563.      MOV   HANG5,#00H
  564.      MOV   HANG6,#00H
  565.      MOV   HANG7,#00H  
  566.      MOV   HANG8,#00H  
  567.            RET
  568. ;====================背景区初值子程序===========================
  569. ;输入:"48H,49H,4AH,4BH,4CH,4DH,4EH,4FH,"
  570. ;输出:无
  571. ;实现的功能:设置背景区数据初值
  572. ;===============================================================
  573.    CHUZHI1:MOV   BEIJING1,#00H
  574.            MOV   BEIJING2,#00H
  575.      MOV   BEIJING3,#00H
  576.      MOV   BEIJING4,#00H      
  577.      MOV   BEIJING5,#00H
  578.      MOV   BEIJING6,#00H
  579.      MOV   BEIJING7,#00H  
  580.      MOV   BEIJING8,#00H  
  581.            RET
  582. ;=======================复位子程序==============================
  583. ;输入:40H-47H
  584. ;输出:无
  585. ;实现的功能:把CHULI1-CHULI8的数据清零。
  586. ;===============================================================
  587.   QINGLING:MOV   HANG1,#00H   ;数据清零
  588.            MOV   HANG2,#00H
  589.      MOV   HANG3,#00H
  590.            MOV   HANG4,#00H
  591.      MOV   HANG5,#00H
  592.            MOV   HANG6,#00H
  593.      MOV   HANG7,#00H
  594.            MOV   HANG8,#00H
  595.            RET
  596. ;====================数据保存1子程序============================
  597. ;输入:50H-52H
  598. ;输出:
  599. ;实现的功能:把40H-42H的数据保存到50H-52H中。
  600. ;===============================================================      
  601.     SHUJU1:MOV    SHU1,HANG1      ;保存第一行数据
  602.            MOV    SHU2,HANG2   ;保存第一行数据
  603.            MOV    SHU3,HANG3   ;保存第一行数据  
  604.      RET
  605. ;====================数据保存2子程序============================
  606. ;输入:50H-52
  607. ;输出:
  608. ;实现的功能:把旋转后的数据保存到50H-52H中。
  609. ;===============================================================
  610.     SHUJU2:MOV    SHU1,XUAN1   ;保存旋转后第一行的数据
  611.            MOV    SHU2,XUAN2   ;保存旋转后第二行的数据
  612.      MOV    SHU3,XUAN3   ;保存旋转后第三行的数据
  613.      RET
  614. ;====================数据保存3子程序============================
  615. ;输入:20H-22H
  616. ;输出:
  617. ;实现的功能:把50H-52H中的数据放到20H-22H中,放到寻址区。
  618. ;===============================================================
  619.     SHUJU3:MOV    XUAN1,SHU1  ;把保存好的第一行数据转移到寻址区  
  620.            MOV    XUAN2,SHU2  ;把保存好的第二行数据转移到寻址区  
  621.      MOV    XUAN3,SHU3  ;把保存好的第三行数据转移到寻址区  
  622.      RET
  623. ;====================数据保存4子程序============================
  624. ;输入:40H-42H
  625. ;输出:
  626. ;实现的功能:把旋转后的数据保存到50H-52H中。
  627. ;===============================================================
  628.     SHUJU4:MOV    HANG1,XUAN1   ;把寻址区的第一行数据取回
  629.            MOV    HANG2,XUAN2   ;把寻址区的第二行数据取回
  630.      MOV    HANG3,XUAN3   ;把寻址区的第三行数据取回
  631.      RET
  632. ;====================数据保存5子程序============================
  633. ;输入:56-5DH
  634. ;输出:
  635. ;实现的功能:把40H-47H中的数据保存到56H-5DH中。
  636. ;===============================================================
  637.     SHUJU5:MOV    CHENG1,HANG1  ;把数据保存起来
  638.      MOV    CHENG2,HANG2
  639.      MOV    CHENG3,HANG3
  640.      MOV    CHENG4,HANG4
  641.      MOV    CHENG5,HANG5
  642.      MOV    CHENG6,HANG6
  643.      MOV    CHENG7,HANG7
  644.      MOV    CHENG8,HANG8   
  645.      RET
  646. ;====================数据保存6子程序============================
  647. ;输入:
  648. ;输出:
  649. ;实现的功能:把56H-5DH的数据保存到40H-47H中。
  650. ;===============================================================
  651.           SHUJU6:MOV    HANG1,CHENG1  ;把原来保存的数据取回
  652.            MOV    HANG2,CHENG2
  653.      MOV    HANG3,CHENG3
  654.            MOV    HANG4,CHENG4
  655.      MOV    HANG5,CHENG5
  656.            MOV    HANG6,CHENG6
  657.      MOV    HANG7,CHENG7
  658.            MOV    HANG8,CHENG8
  659.      RET                                                   
  660. ;====================定时中断0服务子程序========================
  661. ;输入:无
  662. ;输出:无
  663. ;实现的功能:实现定时20MS,影响标中断志位BIT
  664. ;===============================================================
  665.    T0_1:MOV    TL0,#0E0H        ;设置定时初值
  666.         MOV    TH0,#0B1H
  667.         SETB   BT            ;定时标志位清0
  668.      RETI
  669. ;========================中断设置子程序=========================
  670. ;输入:无
  671. ;输出:无
  672. ;实现的功能:初始化设置定时器,设置初值
  673. ;===============================================================
  674.             INIT:MOV    TMOD,#01H      ;定时器0工作方式1
  675.          MOV    TL0,#0E0H    ;设置定时初值
  676.         MOV    TH0,#0B1H
  677.      MOV    IE,#82H       ;开定时器中断0
  678.      SETB   TR0        ;开定时器0
  679.      RET
  680. ;==========================延时子程序===========================
  681. ;输入;无
  682. ;输出: 无
  683. ;实现的功能:延时一段时间
  684. ;===============================================================
  685.            DELAY:
  686.        L6:MOV  R6,#30
  687.               L7:MOV  R7,#20
  688.      L8:DJNZ R7,L8
  689.               DJNZ R6,L7
  690.       RET
  691. ;=========================程序结束=============================
  692.      END
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:72213 发表于 2015-1-14 14:42 | 只看该作者
回复

使用道具 举报

板凳
ID:79481 发表于 2015-5-10 23:47 | 只看该作者
汇编!吊!看不懂!厉害!
回复

使用道具 举报

地板
ID:69240 发表于 2015-5-17 09:58 来自触屏版 | 只看该作者
屌,汇编
回复

使用道具 举报

5#
ID:97007 发表于 2016-5-14 11:51 | 只看该作者
不会汇编怎么破
回复

使用道具 举报

6#
ID:141219 发表于 2016-10-3 18:11 | 只看该作者
看不懂汇编,是C语言就好了
回复

使用道具 举报

7#
ID:102963 发表于 2020-2-14 23:28 | 只看该作者
请问
电路图呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表