顺序输出片内RAM的数据

来源:互联网 发布:matlab怎么编程 编辑:程序博客网 时间:2024/05/13 20:18

固定的数据,常常是存放在 ROM 里面,使用 MOVC 指令读出来再输出。

如果要求这些数据,经常的发生些变化,例如想要使LED 汉字显示屏的汉字出现滚动,这就需要把这些数据预先放在 RAM 中,按时其中的修改内容。

下面就是一个在片内 RAM 存放数据并输出的程序实例。
;-------------------------------------------
单片机定时器中断实验,要求:

开机后第一秒钟L0、L2亮,第二秒钟L1、L3亮,第三秒L4、L6亮,第四秒钟L5、L7亮,
第五秒L0、L2、L4、L6亮,第六秒钟L1、L3、L5、L7亮,第七秒钟八个二极管全亮,第八秒钟全灭。
以后循环下去。

用汇编语言编写程序,不要C语言的。

2011-5-18 16:26 | 悬赏分:30 |
;--------------------------------------------
最佳答案:

下列程序,已经经过实验,可以满足题目要求.

        ORG   0000H
        SJMP  MAIN
        ORG   000BH
        SJMP  T0_INT
;---------------------------------
MAIN:
        MOV  TMOD,  #01H   ;T0定时方式1
        MOV  TH0,  #(65536-50000) / 256   ;定时
        MOV  TL0,  #(65536-50000) MOD 256 ;
        SETB TR0           ;启动T0
        MOV  IE,  #82H     ;开中断
;---------------------------------
;一秒钟L0、L2亮,第二秒钟L1、L3亮,第三秒L4、L6亮,第四秒钟L5、L7亮,
;第五秒L0、L2、L4、L6亮,第六秒钟L1、L3、L5、L7亮,第七秒钟八个二极管全亮,第八秒钟全灭。
;把有关数据放到片内 RAM。
        MOV  30H, #11111010B
        MOV  31H, #11110101B
        MOV  32H, #10101111B
        MOV  33H, #01011111B
        MOV  34H, #10101010B
        MOV  35H, #01010101B
        MOV  36H, #00000000B
        MOV  37H, #11111111B
;---------------------------------
        MOV  R0,  #30H
        MOV  R7,  #20
M_LOOP:
        SJMP M_LOOP        ;无限循环
;---------------------------------
T0_INT:
        MOV  TL0,  #(65536-50000) MOD 256 ;
        MOV  TH0,  #(65536-50000) / 256   ;定时
        DJNZ R7, T0_END
        MOV  R7,  #20
        MOV  P1,  @R0
        INC  R0
        CJNE R0, #38H, T0_END
        MOV  R0,  #30H
T0_END:
        RETI
;---------------------------------
END
;-------------------------------------------
回答者:做而论道 | 十五级 采纳率:43% 名人 达人
回答时间:2011-5-18 20:52
原题网址:http://zhidao.baidu.com/question/269215321.html
原题网址:http://zhidao.baidu.com/question/269311777.html
提问者对于答案的评价:谢谢
;-------------------------------------------

0 0
原创粉丝点击