那位单片机高手可以给我有关MSC-51系列单片机的例子程序.

如:有关指令的,顺序编程,分支编程,循环编程,子程序调用,查表编程.谢谢急用!!!!!!!!!!... 如:有关指令的,顺序编程,分支编程,循环编程,子程序调用,查表编程.谢谢急用!!!!!!!!!! 展开
 我来答
hyz_bd
2007-04-11 · 超过17用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:53.8万
展开全部
顺序编程,分支编程,循环编程,子程序调用:

;p1口八个灯作跑马灯。

org 0000h
ajmp start
org 0030h
start:
mov a,#0ffh ;
clr c ;
mov r2,#08h ;循环八次。
loop: rlc a ;带进位左移。
mov p2,a ;输出到P1口。
call delay ;延时一段时间
djnz r2,loop ;反复循环
mov r2,#07h ;再往回循环。
loop1:
rrc a ;带进位右移
mov p2,a ;输出到P1口。
call delay ;延时一段时间
djnz r2,loop1 ;反复循环
jmp start ;重新开始

delay:
mov r3,#20 ;延时子程序
d1: mov r4,#200
d2: mov r5,#248
djnz r5,$
djnz r4,d2
ret

end

查表编程:

;例程:100位计数器

a_bit equ 20h ;个位数存放处
b_bit equ 21h ;十位数存放处
temp equ 22h ;计数器寄存器

star: mov temp,#0 ;初始化计数器
stlop: acall display
inc temp
mov a,temp
cjne a,#100,next ;=100重来
mov temp,#0
next: ljmp stlop

;显示子程序
display: mov a,temp ;将temp中的十六进制数转换成10进制
mov b,#10 ;10进制/10=10进制
div ab
mov b_bit,a ;十位在a
mov a_bit,b ;个位在b

mov dptr,#numtab ;指定查表启始地址
mov r0,#4
dpl1: mov r1,#250 ;显示1000次
dplop: mov a,a_bit ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
mov p0,a ;送出个位的7段代码
clr p2.0 ;开个位显示
acall d1ms ;显示1ms
setb p2.0
mov a,b_bit ;取十位数
MOVC A,@A+DPTR ;查十位数的7段代码
mov p0,a ;送出十位的7段代码
clr p2.1 ;开十位显示
acall d1ms ;显示1ms
setb p2.1
djnz r1,dplop ;100次没完循环
djnz r0,dpl1 ;4个100次没完循环
ret
;1MS延时(按12MHZ算)
;====================================================
D1MS: MOV R7,#80
DJNZ R7,$
RET

;7段数码管各划的数字排列表
numtab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
; 0 1 2 3 4 5 6 7 8 9

end
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式