固定的数据,常常是存放在 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
提问者对于答案的评价:谢谢
;-------------------------------------------