整个程序结束文档格式.docx

上传人:b****5 文档编号:19197499 上传时间:2023-01-04 格式:DOCX 页数:26 大小:20.69KB
下载 相关 举报
整个程序结束文档格式.docx_第1页
第1页 / 共26页
整个程序结束文档格式.docx_第2页
第2页 / 共26页
整个程序结束文档格式.docx_第3页
第3页 / 共26页
整个程序结束文档格式.docx_第4页
第4页 / 共26页
整个程序结束文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

整个程序结束文档格式.docx

《整个程序结束文档格式.docx》由会员分享,可在线阅读,更多相关《整个程序结束文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

整个程序结束文档格式.docx

addca,r3

daa

mova,r4

addca,r4

djnzr5,TLoop

Transfer:

movb,#2

mulab

movvolthigh,b

callBin2Bcd

movvolthigh,r4

movvoltlow,r3

Displayvolt2DisplayBuf:

movr1,#42h

movb,#10h

divab

mov@r1,a

incr1

mov@r1,b

-------------------------------------------------

驱动喇叭,实现声音报警的子程序

voicewarning:

movTH0,ToneHigh

movTL0,ToneLow

setbTR0

movr5,#100

lcallDelay1

clrTR0

setbp3.2

ret

驱动喇叭,实现声音报警的中断子程序

---------------------------------------------------------

Timer0Int:

movTH0,ToneHigh

movTL0,ToneLow

setbTR0

cplP3.2

------------------------------------------------------------------------

正反转步进子程序

--------------------------------

STEPS:

ANLStepState,#83HBy-gnksguybb

MOVA,StepState

JBACC.7,STPSC

MOVDPTR,#CTAB

AJMPSTPW

STPSC:

MOVDPTR,#FTAB

ANLA,#03H

STPW:

MOVCA,@A+DPTR

MOVP1,A

INCStepState

RET

DEL:

MOVR5,#0;

延时子程序

DEL0:

DJNZR5,DEL0

FTAB:

DB83H,86H,8CH,89H

CTAB:

DB79H,7cH,76H,73H

-------------------------------------------------------

KEY扫描有关的程序

KeyTest:

movdptr,#0e100h

mova,#03h

movx@dptr,a

callTestKey;

有键入?

jnzgetkey0

ljmpKReturn;

无键入,继续显示

getkey0:

callGetKey;

读入键码

MOVR4,#04H

anla,#1fh;

显示键码

MOVkPLAYTemp,A

movLEDBuf,a

;

movLEDBuf+1,#11h

movLEDBuf+2,#11h

movLEDBuf+3,#11h

;

movLEDBuf+4,#11h

movLEDBuf+5,#11h

LOOPKPLAY:

LCALLDisplayLED

LCALLDelay

MOVA,kPLAYTemp

DJNZR4,LOOPKPLAY

movTLCDkeyBuf,kPLAYTemp

setbrs0;

存储键码以便lcd显示上、下限参数!

!

mov@r0,kPLAYTemp

decr0

clrrs0

mova,KEYCount

cjnea,#04h,pfjump0

ajmppfjump

pfjump0:

jcpfjump1

cjnea,#07h,pfjump2

ajmppfjump3

pfjump2:

pfjump3:

movColumnTemp,#112

movCOLUMN,ColumnTemp

movLCDcount,#08h

MOVDPTR,#DDATB

MOVPAGE1,#02H

MOVCODE1,TLCDkeyBuf

LCALLCCW_PR

movr0,#LCDkeyBuf

movr1,#TemLCDkeyBuf

movr7,#04h

TLCDLOOP:

mova,@r0

mova,@r0

orla,@r1

decr1

djnzr7,TLCDLOOP

movr3,TemLCDkeyBuf-3

movr2,TemLCDkeyBuf-2

movr0,#47h;

#LimitParameter0

movr7,#02h

TLCDLOOP1:

acallbcd2hex

movr0,#48h;

incr0

movr3,TemLCDkeyBuf-1

movr2,TemLCDkeyBuf

djnzr7,TLCDLOOP1

movr0,#LCDkeyBuf

movColumnTemp,#17H

movKEYCount,#00h

pushdpl

pushdph

lcallUartModle;

完全显示,包括数据与字母

popdph

popdpl

ajmpKReturn

pfjump1:

mova,ColumnTemp

adda,#07h

movColumnTemp,a

ajmpLCDKdisplay

pfjump:

movColumnTemp,#91

LCDKdisplay:

INCKEYCount

KReturn:

串口通讯子程序

---------------------------------------------

UartModle:

movdptr,#UartTAB;

通过串口传送TOPLIMIT:

movr1,#00h

movr7,#0bh

acallUartloop1

movr0,#LCDkeyBuf;

传送数据TOPLIMIT

movr7,#04h

movr1,#TemLCDkeyBuf

acallBCD2ASC;

将数据转换为ASC码

movr0,#TemLCDkeyBuf

acallUartloop

传送LOWLIMIT:

movr1,#0bh

clrC

mova,#LCDkeyBuf

subba,#04h

movr0,a;

传送数据LOWLIMIT

movr0,#TemLCDkeyBuf

传送CURRENT:

movr1,#22

movr7,#0ah

movr0,#42h;

传送数据CURRENT

acallBCD2ASC1;

mova,SystemState

jzUartDispNormal

传送WARRING!

movr1,#41

ajmpUartReturn

UartDispNormal:

传送NORMAL

movr1,#32

movr7,#09h

UartReturn:

------------------------------------

UartModle0:

jzUartDispNormal0

ajmpUartReturn1

UartDispNormal0:

UartReturn1:

-----------------------------------------

Uartloop:

传送数字

movsbuf,a

Uartwait:

jnbti,Uartwait

clrti

djnzr7,Uartloop

--------------------------------------------

Uartloop1:

传送字符

mova,r1

movca,@a+dptr

movsbuf,a

Uartwait1:

jnbti,Uartwait1

djnzr7,Uartloop1

BCD2ASC:

转换为PC机的ASC码

adda,#30h

djnzr7,BCD2ASC

BCD2ASC1:

incr0

djnzr7,BCD2ASC1

UartTAB:

DB20h,54h,4fh,50h,4ch,49h,4dh,49h,54h,3ah,20h;

ASC--TOPLIMIT:

-11

DB20h,4ch,4fh,57h,4ch,49h,4dh,49h,54h,3ah,20h;

ASC--LOWLIMIT:

DB20h,43h,55h,52h,52h,45h,4eh,54h,3ah,20h;

ASC--CURRENT:

-10

DB20h,4eh,4fh,52h,4dh,41h,4ch,1ah,0bh;

ASC--NORMAL*-9

DB20h,57h,41h,52h,52h,49h,4eh,47h,21h,0bh;

ASC--WARRING!

 

---------------------------------------------------------------

bcd2hex:

acallbcdh

mova,r2

movb,#100

adda,r3

addca,b

movr2,a

drr1:

rrca

mov@r0,a

bcdh:

movr4,b

movb,#10

adda,r4

Delay1:

延时10ms子程序

movr7,#0ah

DL:

movr6,#0ffh

DL6:

djnzr6,DL6

djnzr7,DL

djnzr5,Delay1

ret

TestKey:

movdptr,#OUTBIT

mova,#0

movx@dptr,a;

输出线置为0

movdptr,#IN

movxa,@dptr;

读入键状态

cpla

anla,#0fh;

高四位不用

KeyTable:

数字键码定义

db00h,01h,04h,07h

db0fh,02h,05h,08h

db0eh,03h,06h,09h

db0dh,0ch,0bh,0ah

db10H,10H,10H,10H,10H

GetKey:

movP2,dph

movr0,#Low(IN)

movr1,#00100000b

movr2,#6

KLoop:

mova,r1;

找出键所在列

movx@dptr,a

rra

movr1,a;

下一列

movxa,@r0

anla,#0fh

jnzKGoon1;

该列有键入

djnzr2,KLoop

movr2,#0ffh;

没有键按下,返回0ffh

sjmpKExit

KGoon1:

键值=列X4+行

mova,r2

deca

rla

movr2,a;

r2=(r2-1)*4

r1中为读入的行值

movr1,#4

KLoopC:

rrca;

移位找出所在行

jcKExit

incr2;

r2=r2+行值

djnzr1,KLoopC

KExit:

mova,r2;

取出键码

movdptr,#KeyTable

movca,@a+dptr

movr2,a

KWaitRelease:

movdptr,#OUTBIT;

等键释放

movr6,#10

callDelay

callTestKey

jnzKWaitRelease

--------------------------------------------------------

AD查询转换有关程序

-----------------------------------------------------------------------

Delay:

movr7,#0;

延时子程序

DelayLoop:

djnzr7,DelayLoop

djnzr6,DelayLoop

DisplayLED:

movr0,Buf

movr1,LEDCount;

共6个八段管

movr2,LEDBitControll;

从左边开始显示

Loop:

mova,#00h

关所有八段管

mova,@r0

movdptr,#LEDmap

movB,#8;

送164

DLP:

movr3,a

movacc.0,c

ANLA,#0FDH

movdptr,#DAT164

movdptr,#CLK164

orla,#02h

anla,#0fDh

mova,r3

djnzB,DLP

显示一位八段管

movr6,#1

显示下一位

djnzr1,Loop

LEDMAP:

八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

db40H,00h

LCD显示有关程序

CCW_PR:

确定字符字模块首地址

MOVA,CODE1;

取代码

;

字模块宽度为32或16个字节

MULAB;

代码X32或16

ADDA,DPL;

字符字模块首地址=字模库首地址+代码X32

MOVDPL,A

MOVA,B

ADDCA,DPH

MOVDPH,A

PUSHCOLUMN;

列地址入栈

MOVCODE1,#00H;

代码寄存器借用为间址寄存器

CCW_1:

MOVCOUNT,LCDcount;

计数器设定为16

MOVA,PAGE1;

读页地址寄存器

ANLA,#03H

ORLA,#0B8H;

"

或"

页地址设置代码

MOVCOM,A;

写页地址设置指令

LCALLPR0

LCALLPR3

POPCOLUMN;

取列地址值

MOVA,COLUMN;

读列地址寄存器

CLRC

SUBBA,#PD1;

列地址-模块参数

JCCCW_2;

<0为左半屏显示区域(E1)

MOVCOLUMN,A;

≥0为右半屏显示区域(E2)

MOVA,PAGE1

SETBACC.3;

设置区域标志位

MOVPAGE1,A;

0"

为E1,"

1"

为E2

CCW_2:

MOVCOM,COLUMN;

设置列地址值

判区域标志以确定设置哪个

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

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

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

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