用单片机设计的测速表源程序

发布时间:
来源: 电子工程世界

测量转速,使用霍尔传感器,被测轴安装有12只磁钢,即转轴每转一周,产生12个脉冲,要求将转速值(转/分)显示在数码管上。

程序如下:

DISPBUFEQU5AH ;显示缓冲区从5AH开始

SecCounEQU59H

SpCounEQU57H;速度计时器单元57H和58H,高位在前(57H单元中)

CountEQU56H;显示时的计数器

SpCalcbit00h;要求计算速度的标志

HiddenEQU16;消隐码

ORG0000H

AJMPSTART

ORG1BH

JMPTIMER1;定时中断1入口

ORG30H

START:MOVSP,#5FH;设置堆栈

MOVP1,#0FFH

MOVP0,#0FFH

MOVP2,#0FFH;初始化,所有显示器、LED灭

MOVTMOD,#00010101B;定时器T1工作于方式1,定时器0工作方式1MOVTH1,#HIGH(65536-4000)

MOVTL1,#LOW(65536-4000)

SETBTR1

SETBET1;开定时器1中断

SETBEA

LOOP:JNBSpCalc,LOOP;如果未要求计算,转本身循环

;标号: MULD 功能:双字节二进制无符号数乘法

;入口条件:被乘数在R2、R3中,乘数在R6、R7中。

;出口信息:乘积在R2、R3、R4、R5中。

;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节

MOVR2,SpCoun

MOVR3,SpCoun+1

MOVR6,#0

MOVR7,#5;测得的数值是每秒计数值,转为每分转速(每一转测12次,故乘5而非60)

CALLMULD

;标号: HB2 功能:双字节十六进制整数转换成双字节BCD码整数

;入口条件:待转换的双字节十六进制整数在R6、R7中。

;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。

;影响资源:PSW、A、R2~R7 堆栈需求: 2字节

MOVA,R4

MOVR6,A

MOVA,R5

MOVR7,A;将乘得的结果送R6R准备转换,这里结果不可能超过2字节

CALLHB2

CBCD:

MOVDISPBUF,R3;最高位

MOVA,R4;

ANLA,#0F0H;去掉低4位

SWAPA;将高4位切换到低4位

MOVDISPBUF+1,A

MOVA,R4

ANLA,#0FH

MOVDISPBUF+2,A

MOVA,R5

ANLA,#0F0H

SWAPA

MOVDISPBUF+3,A

MOVA,R5

ANLA,#0FH

MOVDISPBUF+4,A

CLRSpCalc;清计算标志

JMPLOOP

;主程序到此结束

TIMER1:PUSHACC;ACC入栈

PUSHPSW;PSW入栈

SETBRS0;工作区1

JNBTR0,SETTR0;如果T0未运行,则开启T0

JMPGO1

SETTR0:

SETBTR0

GO1:

INCSecCoun;秒计数器加1

MOVA,SecCoun

CJNEA,#251,Go2;如果未到1s则转

CLRTR0;1s到了,则停止T0的运行

MOVSpCoun,TH0

MOVSpCoun+1,TL0;读取计数值

CLRA

MOVTH0,A

MOVTL0,A;清计数器

SETBSpCalc;要求主程序计算速度

MOVSecCoun,#0;清秒计数器

Go2:

INCCOUNT ;用于显示的计数器

MOVA,COUNT

CLRC

SUBBA,#6

JZN1

JMPN2

N1:MOVCOUNT,#0

N2:MOVA,#DISPBUF

ADDA,COUNT

MOVR0,A;指向当前要显示的显示缓冲区

MOVA,@R0;取第一个待显示数

MOVDPTR,#DISPTAB;字形表首地址

MOVCA,@A+DPTR ;取字形码

MOVP0,A;将字形码送P0位(段口)

MOVA,COUNT

MOVDPTR,#BitTab;字位表首地址

MOVCA,@A+DPTR

ORLP2,#11111100B

ANLP2,A

MOVTH1,#HIGH(65536-4000)

MOVTL1,#LOW(65536-4000)

POPPSW

POPACC

RETI

BitTab:DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH

DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH

……其他数学运算程序(略)


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。