51单片机汇编编程

51单片机汇编编程,第1张

1:

KEY1 EQU P22

KEY2 EQU P21

KEY3 EQU P20

RED EQU P14

YELLOW EQU P15

GREEN EQU P16

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:

SETB RED

SETB YELLOW

SETB GREEN

LP:

JB KEY1,LP1

CLR RED

SJMP LP

LP1:

JB KEY2,LP2

CLR YELLOW

SJMP LP

LP2:

JB KEY3,MAIN

CLR GREEN

SJMP LP

END

2:

KEY1 EQU P22

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:

MOV R0,#0

LP:

JB KEY1,DISP

JNB KEY1,$

INC R0

CJNE R0,#10,DISP

MOV R0,#0

DISP:

MOV DPTR,#LEDTAB

MOV A,R0

MOVC A,@A+DPTR

MOV P0,A

SJMP LP

TABLE: ; 共阴极数码管显示代码表

DB 3FH,06H,5BH,4FH,66H ;01234

DB 6DH,7DH,07H,7FH,6fh ;56789

END

POP是d栈指令,我们写程序过程中,有时候会用到,寄存器冲突现象,比如,我们刚在A中存储了一个数据,但是我们又要做加法,我们不希望A中的书据丢失,怎么办,与时,就可以用到push指令,在Sp指向的空间开辟栈空间,把A中的内容压进去,等我们需要压入的数据的时候,就用Pop指令d出,这样,就实现了,即做完了工作,又保护了现场。

欢迎多多交流,纯手打。。。。

试试下列程序:

;

ORG 0000H

SJMP BEGIN

ORG 000BH

MOV TH0, #3CH ;定时100ms

MOV TL0, #0B0H

DJNZ R7, E_T0

MOV R7, #5

SETB F0 ;每500ms置一

E_T0:RETI

;------------------------------------

BEGIN:

MOV TMOD, #01H ;T0定时方式1

MOV TH0, #3CH ;50ms@12MHz

MOV TL0, #0B0H ;100ms@6MHz

MOV R7, #5

SETB TR0

SETB ET0

SETB EA

;------------------------

M_LOOP:

MOV A, #255

L1:

MOV P1, A

JNB F0, $

CLR F0

CLR C

RLC A

JC L1

;------------------------

L2:

MOV P1, A

JNB F0, $

CLR F0

SETB C

RRC A

JNC L2

;------------------------

MOV R2, #8 ;全亮全灭8次

L3:

MOV P1, #0 ;全亮

JNB F0, $

CLR F0

MOV P1, #255;全灭

JNB F0, $

CLR F0

DJNZ R2, L3

;------------------------

JMP M_LOOP

;------------------------------------

END

本程序可实现:

L1-L8依次点亮----L1-L8依次熄灭----8个灯全亮全灭8次~循环 各时序间隔05s。

答疑解难   跑马灯程序

                   ORG     0000H

                   LJMP     MAIN

                   ORG     0100H

MAIN:            JB          P07,MAIN  ;等待开始键按下

                   LCALL    YS             ;按键延时

                    JB         P07,MAIN

                    MOV     A,#7FH       ;是开始键按下  则跑马灯开始运行

LL:                 MOV     P1,A

                    LCALL    YS           ;显示延时

                    RR          A             ;循环右移一位

                    JB         P06, LL     ;没有按下停止键  则继续跑马

                    LCALL    YS            ;按键延时

                    JB          P06,LL         ;按下停止键 则停止跑马;否则继续跑马

                    MOV      A,#0FFH

                    MOV      P1,A

                    SJMP     MAIN            ;转到程序开始处,等待开始键的按下

YS:                MOV    R7,#150          ;延时子程序

YL:                MOV    R6,#200

YY:                NOP

                   DJNZ    R6,YY

                   DJNZ    R7,YL

                   RET

                   END

硬件接口电路如下:

      哈哈   还满意吗   就请给俺选择(满意选项)吧

以上就是关于51单片机汇编编程全部的内容,包括:51单片机汇编编程、51单片机汇编程序详解:POP是干什么的、51单片机定时器汇编程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10114209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存