单片机.docx

上传人:b****7 文档编号:9625221 上传时间:2023-02-05 格式:DOCX 页数:17 大小:16.57KB
下载 相关 举报
单片机.docx_第1页
第1页 / 共17页
单片机.docx_第2页
第2页 / 共17页
单片机.docx_第3页
第3页 / 共17页
单片机.docx_第4页
第4页 / 共17页
单片机.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机.docx

《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(17页珍藏版)》请在冰豆网上搜索。

单片机.docx

单片机

MOVDPTR,#2000H

MOVXA,@DPTR

MOV20H,A

MOVDPTR,#2000H

MOVXA,@DPTR

MOVDPTR,#3000H

MOVX@DPTR,A

MOVA,20H

MOV20H,30H;XCHA,30H

MOV30H,AMOV20H,A

00100101P=1CY=0AC=0

+10011011

11000000P=0CY=0AC=1

ANLA,#0F0H

ORLA,#0FH

XRLA,#0FH

CPLAXRLA,#0FFH

 

A=00000001RLA

A=00000010RLA

A=00000100

10=8+2

010111105E

设数a存放在R1中,数b存放在R2中,计算Y=a2-b,并将结果放入R4和R5中。

ORG0000H

LJMPSTART

ORG0100H

START:

MOVR1,#03H

MOVR2,#04H

MOVA,R1

MOVB,A

MULAB

CLRC

SUBBA,R2

MOVR4,A;A=00000101

CPLA;A=11111010

MOVP1,A

MOVA,B

SUBBA,#00H

MOVR5,A

END

 

已知两个带符号数分别存放于ONE和TWO单元,试编程比较的大小,并把大数存放于MAX单元。

ORG0100H

ONEDATA30H

TWODATA31H

MAXDATA32H

CLRC

MOVA,ONE

SUBBA,TWO

JZXMAX

JBACC.7,NEG

JBOV,YMAX

SJMPXMAX

NEG:

JBOV,XMAX

YMAX:

MOVA,TWO

SJMPDONE

XMAX:

MOVA,ONE

DONE:

MOVMAX,A

END

 

Org0000H

LJMPSTART

0RG0003H

LJMPSERINT0

ORG0100H

START:

MOVIE,#10000001B

MOVIP,#xxxxxxxxxB

MOVA,#0FEH

MOVP1,A

SJMP$

DELAY:

…….

…….

……

RET

ORG0200H

SERINT0:

Movr0,#08h

Loop:

RLA

MOVP1,A

LCALLDELAY

Djnzr0,loop

RETI

END

 

交通灯框图

开始START:

…….

红灯亮MOVP1,#0FFH

CLRP1.0

倒计时20S

绿灯亮MOVP1,#0FFH

CLRP1.1

倒计时15S

黄灯亮0.5S

全灭0.5S

返回开始LJMPSTART

 

CLRP2.0

CLRP2.1

LOOP0:

SETBP2.1

MOVP1,#0C0H

CLRP2.1

SETBP2.0

MOVP1,#0F9H

CLRP2.0

DJNZR1,LOOP0

 

ORG0000H

LJMPMAIN

ORG0100H

TEMPEQU20H

MAIN:

MOVA,#0FEH

MOVTEMP,#50

MOVIE,#00H

LOOP1:

JNBP3.2,LOOP2

JNBP3.3,LOOP2

SJMPLOOP1

LOOP2:

LCALLDELAY

JNBP3.2,INT0

JNBP3.3,INT1

SJMPLOOP1

Into:

MOVA,TEMP

INCA

LCALLDISPLAY

LCALLDELAY200MS

SJMPLOOP1

INT1:

 

SJMPLOOP1

DELAY:

…….

…….

……..

RET

END

 

ORG0000H

LJMP

ORG0100H

…..

MOVTMOD,#20H

MOVTL1,#xxH

MOVTH1,#xxH

MOVSCON,#0D0H11010000

MOVPCON,#80H

MOVIE,#00H

SETBTR1

MOVA,#00H

MOVR7,#20H

MOVR0,#20H

LOOP0:

MOV@R0,A

INCA

INCR0

DJNZR7,LOOP0

MovR0,#20h

MOVR7,#20H

START:

Sent:

MOVR7,#20H

MOVR0,#20H

Loop1:

Mova,@r0

Incr0

Cjner0,40h,checkt

Ajmpback

Checkt:

Movc,p

Movtb8,c

Movsbuf,a

Wait:

Jbcti,loop1

Sjmpwait

Back:

CONT:

JBCRI,LOOP3

SJMPCONT

LOOP3:

MOVA,SBUF

JNZSTART;重新发送

IncR0

DJNZR7,START

RETSJMP$

END

 

RE:

MOVTMOD,#20H

MOVTL1,#0F4H

MOVTH1,#0F4H

MOVSCON,#0D0H11010000

MOVPCON,#80H

MOVIE,#00H

SETBTR1

MOVR0,#50H

MOVR7,#20

 

RIGHT:

MOV@R0,A;保存数据

INCR0;地址+1

LOOP4:

MOVA,#00H

MOVSBUF,A;返回0表示正确

LOOP6:

JBCTI,LOOP5

SJMPLOOP6

LOOP5:

DJNZR7,WAIT

;显示接收的数据

MOVR7,#20H

MOVR0,#50H

LOOP1:

MOVA,@R0

LCALLDISPLAY

延时1S

INCR0

DJNZR7,LOOP1

SJMP$

ERR:

告诉甲机,重新发送

MOVA,#0FFH

MOVSBUF,A;返回FFH表示错误

LOOP2:

JBCTI,WAIT

SJMPLOOP2

DISPLAY:

 

RET

DELAY:

 

RET

END

 

Org0000h

Ljmpstart

Org0003h

Ljmpsint0

Org0100h

Start:

Mova,#0efh

Sjmp$

Delay:

…..

…..

…..

ret

Org0400h

Sint0:

Rla

Movp1,a

Lcalldelay

reti

end

 

p1.0p1.1p1.2…..

检测p1.0是否为0

Jbp1.0,

Start:

Jnbp1.0,switch0

Jnbp1.1,switch1

……

……

Jnbp1.5,switch5

Ljmpstart

 

Switch2:

03送数码管显示

延时0.5秒

数码管全灭

延时0.5秒

03送数码管显示

延时0.5秒

数码管全灭

延时0.5秒

03送数码管显示

延时0.5秒

数码管全灭

延时0.5秒

15秒倒计时

Dec指令

到0时跳出循环

Setbp3.0

延时0.5秒

Clrp3.0

Ljmpstart

 

数码管动态显示

定义TEMP=XXH存储单元

START:

初始化TEMP=00H,从0开始

LOOP:

调用显示子程序

TEMP+1

判断TEMP是否=100?

是,跳转到START

否,跳转到LOOP

SJMP$

显示子程序:

TEMP->a

R0=50

B=10

a/b

p2.0=1

P2.1=0

a值查表后送P0

调用延时10MS子程序

P2.0=0

P2.1=1

B值查表后送P0

调用延时10MS子程序

循环50次

Ret

延时10MS子程序

D10MS:

RET

TABNUM:

DBXXH,XXH,XXH,……

End

 

地址线:

p2.7-------p2.0p0.7------p0.0

1111000000000000f000h

1111111111111111ffffh

00001111000000000f00h

1111111111111111ffffh

000y0

001

010

011

100

101

110

111

0111100000000000

0111111111111111

 

R0

A=r0

Jzloop0

Decr0

A=r0

Jzloop1

Decr0

A=r0

Jzloop2

……

…..

Decr0

A=r0

Jzloop15

Loop0:

 

Ljmpstart

Loop1:

 

0.004999999999

0.005000000000

0.0000000001111111

0.000000001000000.。

 

Org0000h

Ajmpstart

Org0100h

Start:

clrA

Movdptr,#7fffh

Up:

movx@dptr,A;上升段线性输出

IncA

Nop

Nop

CjneA,#0ffh,up

Down:

movx@dptr,A;下降段输出

DecA

Nop

Nop

CjneA,#00h,down

Ajmpup

end

 

行扫描

列扫描

得到键值

保存键值到R0

R0送A

Jzloop00

Djnzr0,next1

Ajmploop01

Next1:

Djnzr0,next2

Ajmploop02

Next2:

Djnzr0,next3

Ajmploop03

Next3:

Djnzr0,next4

Ajmploop10

Next4:

Djnzr0,next5

Ajmploop11

……

……

 

Loop00:

Mov30h,#01h

并送显示

跳转到开始

Loop01:

…….

……

Loop03:

;+号

Mova,30h

跳转到开始

 

……

……

Loop32:

;=号

Movr1,a

Mova,20h

Jz开始

Rrca

Jc加法

Rrca

Jc减法

Rrca

Jc乘法

Rrca

Jc除法

Sjmp$

加法:

Mova,r1

Adda,30h

显示

跳转到开始

……

end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1