您的位置 首页 报告

根据PIC单片机直流电压表的汇编程序共享

基于PIC单片机直流电压表的汇编程序分享-定义用户寄存器

WEI1EQUH’0C’;BIT0=MODS:选择模式位0:模式11:模式2

;BIT1=BREK:断路判别位0:无断路1:有断路

;BIT2=

;BIT3=

;BIT4=

;BIT5=慢响

;BIT6=快响

;BIT7=长响

WEI2EQUH’0D’;“百位值运算”的启始值

界说用户寄存器

WEI1EQUH’0C’;BIT0=MODS:挑选形式位0:形式11:形式2

;BIT1=BREK:断路判别位0:无断路1:有断路

;BIT2=

;BIT3=

;BIT4=

;BIT5=慢响

;BIT6=快响

;BIT7=长响

WEI2EQUH’0D’;“百位值运算”的启始值


 

WEI3EQUH’0E’;“十位值运算”的启始值

WEI4EQUH’0F’;个位值

WEI5EQUH’10’;百位值

WEI6EQUH’11’;十位值

WEI7EQUH’12’;

WEI8EQUH’13’;

WEI9EQUH’14’;

WEIAEQUH’15’;

WEIBEQUH’16’

WEICEQUH’17’

WEIDEQUH’18’

WEIEEQUH’19’

WEIFEQUH’1A’

WEIGEQUH’1B’

WEIHEQUH’1C’

WEIIEQUH’1D’

CHECKEQUH’7’

DPEQUH’1’

ADEQUH’0’

BUZZEREQUH’3’

REQUH’2’

LEQUH’4’

;************************************************************************

;矢量地址

ORGH’00’;复位矢量

GOTOMAIN

ORGH’04’;中止矢量

NOP

GOTOINTER

;************************************************************************

;数码值

TABLE:

ADDWFPCL,F;

RETLWB’01000000’;“0”值

RETLWB’01111001’;“1”值

RETLWB’00100100’;“2”值

RETLWB’00110000’;“3”值

RETLWB’00011001’;“4”值

RETLWB’00010010’;“5”值

RETLWB’00000010’;“6”值

RETLWB’01011000’;“7”值

RETLWB’00000000’;“8”值

RETLWB’00010000’;“9”值

;————————————————————————

;铲除寄存器WEI1-WEIG

MAIN:

CLRFWEI1;

CLRFWEI2;

CLRFWEI3;

CLRFWEI4;

CLRFWEI5;

CLRFWEI6;

CLRFWEI7;

CLRFWEI8;

CLRFWEI9;

CLRFWEIA;

CLRFWEIB;

CLRFWEIC;

CLRFWEID;

CLRFWEIE;

CLRFWEIF;

CLRFWEIG;

CLRFWEIH;

CLRFWEII;

BSFSTATUS,RP0;

BCFOPTION_REG,NOT_RBPU

BCFSTATUS,RP0;

MOV FPORTB,1;

BTFSSPORTB,1;

BSFWEI1,0;

;————————————————————————

;设置A/D通道及A/D结构

BSFSTATUS,RP0;

MOV LWB’00000010’;设置一个“A/D口”

MOV WFADCON1;参阅电压:作业电压5V

MOV LWB’10000000’;

MOV WFTRISB;

MOV LWB’00000001’;

MOV WFTRISA;

MOV LWB’10000111’;

MOV WFOPTION_REG;

MOV LWB’10100000’;

MOV WFINTCON;

;———————————————————————–

;设置端口“输入/输出”并设置初始状况

BCFSTATUS,RP0;

MOV LWB’01000000’;设置A/D通道:AN0

MOV WFADCON0;选用内部1:8时钟振动

MOV LWB’01111111’;

MOV WFPORTB;

MOV LWB’00010110’;

MOV WFPORTA;

MOV LWD’252’;

MOV WFTMR0;设置TMR0初始值

;————————————————————————

;挑选形式

BTFSCWEI1,0;判别“形式开关”是否闭合

GOTOMODLE2;“形式开关”闭合,则进入“形式2”

GOTOMODLE1;“形式开关”断开,则进入“形式1”

;————————————————————————

;“形式1”初始化

MODLE1:

MOV FPORTB,1;

BTFSSPORTB,CHECK;判别是否有断路

GOTO$+7;

BSFWEI1,1;

BSFWEI1,6;有断路:蜂鸣器快响而且“无显现”延时3秒

BCFWEI1,5;

BCFWEI1,7;

CALLDELAY3S;无断路:“无显现”延时3秒

GOTOSTART;

CALLDELAY3S;

GOTOSTART;

;————————————————————————

;“形式2”初始化检测数码管各段,蜂鸣器“长响”

MODLE2:

BSFWEI1,0;设置“形式挑选位”

BSFWEI1,7;翻开蜂鸣器“长响”

BCFWEI1,5;

BCFWEI1,6;

BCFSTATUS,C;设置“进位标志位”

MOV LWB’11111111’;

MOV WFWEI7;

RLFWEI7,F;

MOV FWEI7,W;

MOV WFPORTB;设置“检测数码管段值”给PORT5

BCFPORTA,R;注册“右数码管”

BCFPORTA,L;注册“左数码管”

CALLDELAYP5;

BSFPORTA,R;封闭“右数码管”

BSFPORTA,L;封闭“左数码管”

MOV LWB’11111111’;

MOV WFPORTB;铲除给PORT5的“检测数码管段值”

BTFSCWEI7,6;检测是否结束

GOTO$-D’11’;没有结束持续检测

BCFPORTA,DP;已结束设置“小数点”及“1”值

BCFPORTA,R;注册“右数码管”

BCFPORTA,L;注册“左数码管”

CALLDELAYP5;

BSFPORTA,R;封闭“右数码管”

BSFPORTA,L;封闭“左数码管”

BSFPORTA,DP;铲除“小数点”及“1”值

BCFWEI1,7;封闭蜂鸣器“长响”

BCFWEI1,6;

BCFWEI1,5;

GOTOSTART;

;————————————————————————

;开端作业

START:

MOV FPORTB,F;

BTFSCPORTB,CHECK;判别是否有断路

GOTODUANLU;有断路

BCFWEI1,1;清0断路判别位

GOTOPANZHI;无断路

;————————————————————————

;断路处理

DUANLU:

BSFWEI1,1;设置断路判别位

BSFWEI1,6;

BCFWEI1,5;

BCFWEI1,7;

GOTOPANZHI;

;————————————————————————

;判别电压值

PANZHI:

BSFADCON0,ADON;A/D处于作业状况

BSFADCON0,GO_DONE;A/D开端运转

BTFSCADCON0,GO_DONE;判A/D是否完结

GOTO$-1;A/D没完结

BCFADCON0,ADIF;

BCFADCON0,ADON;A/D已完结封闭A/D

CALLCV;

MOV FADRES,W;

MOV WFWEI8;

MOV WFWEI2;A/D值传给WEI2

BCFSTATUS,C;清零“进位标志位”

SUBLWD’200’;

BTFSSSTATUS,C

GOTOV_20;跳到“20V以上”程序

MOV FADRES,W

BCFSTATUS,C;清零“进位标志位”

SUBLWD’160’

BTFSSSTATUS,C

GOTOV16;跳到“16V-19.9V之间”程序

MOV FADRES,W

BCFSTATUS,C;清零“进位标志位”

SUBLWD’100’

BTFSSSTATUS,C

GOTOV10;跳到“10V-15.9V之间”程序

MOV FADRES,W

BCFSTATUS,C;清零“进位标志位”

SUBLWD’50’

BTFSSSTATUS,C

GOTOV5;跳到“5V-9.9V之间”程序

GOTOV4.9;跳到4.9V以下程序

;————————————————————————-

V4.9:;4.9V以下数码管显现LL

BTFSCWEI1,1;判别是否有断路

GOTO$+6;

BSFWEI1,7;无断路长响

BCFWEI1,6;

BCFWEI1,5;

CALLLL;

GOTOSTART;

BSFWEI1,6;有断路快响

BCFWEI1,5;

BCFWEI1,7;

CALLLL;

GOTOSTART;

;————————————————————————-

V5:;5V-9.9V之间

BTFSCWEI1,1;判别是否有断路

GOTO$+5;

BSFWEI1,5;无断路慢响

BCFWEI1,6;

BCFWEI1,7;

GOTODISPLAY;

BSFWEI1,6;有断路快响

BCFWEI1,5;

BCFWEI1,7;

GOTODISPLAY;

;————————————————————————-

V10:;10V-15.9V之间

BTFSCWEI1,1;判别是否有断路

GOTO$+5;

BCFWEI1,5;无断路不响

BCFWEI1,6;

BCFWEI1,7;

GOTODISPLAY;

BSFWEI1,6;有断路快响

BCFWEI1,5;

BCFWEI1,7;

GOTODISPLAY;

;————————————————————————-

V16:;16V-19.9V

BSFWEI1,6;快响

BCFWEI1,5;

BCFWEI1,7;

GOTODISPLAY;

;————————————————————————-

V_20:

BTFSCWEI1,1;判别是否有断路

GOTO$+6;

BSFWEI1,7;无断路长响

BCFWEI1,6;

BCFWEI1,5;

CALLHH;

GOTOSTART;

BSFWEI1,6;有断路快响

BCFWEI1,5;

BCFWEI1,7;

CALLHH;

GOTOSTART;

;————————————————————————-

;运算“显现值”

DISPLAY:

NOP;

HUN:

MOV FWEI2,W;

MOV WFWEI3;WEI2-100D的余值传给WEI3作为“十位值运算”的启始值

MOV LWD’100’

BCFSTATUS,C;清零“进位标志位”

SUBWFWEI2,F;WEI2-100D余值传给WEI2

BTFSSSTATUS,C;判WEI2是否大于100D

GOTOTEN;小于100D跳到“十位值运算”处

INCFWEI5,F;大于100DWEI5+1:百位值

GOTOHUN

TEN:

MOV FWEI3,W;

MOV WFWEI4;

MOV LWD’10’;WEI3-10D的余值传给WEI4作为“个位值运算”的启始值

BCFSTATUS,C;清零“进位标志位”

SUBWFWEI3,F;WEI3-10D余值传给WEI3

BTFSSSTATUS,C;判WEI2是否大于10D

GOTONUMB;小于10D跳到“个位值运算”处

INCFWEI6,F;大于10DWEI6+1:十位值

GOTOTEN

;————————————————————————

;显现“十位值”“小数点”

NUMB:

MOV FWEI6,W

CALLTABLE;

MOV WFPORTB;设置“十位值”

BCFPORTA,DP;设置小数点

BCFPORTA,L;翻开显现“十位值”

CALLDELAY;

MOV LWB’11111111’;

MOV WFPORTB;铲除“十位值”

BSFPORTA,DP;铲除小数点

BSFPORTA,L;封闭显现“十位值”

;————————————————————————

;显现“个位值”“百位值”

MOV FWEI4,W

CALLTABLE

MOV WFPORTB;设置“个位值”

BCFSTATUS,Z;铲除“零标志位”

CLRW;铲除W

IORWFWEI5,W;

BTFSSSTATUS,Z;判有无“百位值”

BCFPORTA,DP;显现“百位值”

BCFPORTA,R;翻开显现“个位值”

CALLDELAY;

MOV LWB’11111111’;

MOV WFPORTB;铲除“个位值”

BSFPORTA,DP;铲除“百位值”

BSFPORTA,R;封闭显现“个位值”

CLRFWEI6;

CLRFWEI5;

GOTOSTART;

;************************************************************************

;延时20MS秒程序

DELAY:

MOV LWD’10’;

MOV WFWEIE;

DELAY1:

MOV LWD’10’;

MOV WFWEIF;

DELAY2:

MOV LWD’10’;

MOV WFWEIG;

DELAY3:

DECFSZWEIG,F;

GOTODELAY3;

DECFSZWEIF,F;

GOTODELAY2;

DECFSZWEIE,F;

GOTODELAY1;

RETURN;

;————————————————————————

;延时0.5秒程序

DELAYP5:

CLRFWEI9;

CLRFWEIA;

BTFSSWEIA,2;

GOTO$-1;

CLRFWEI9;

CLRFWEIA;

RETURN;

;————————————————————————

;延时3秒程序

DELAY3S:

CLRFWEI9;

CLRFWEIA;

BTFSSWEIA,4;

GOTO$-1;

CLRFWEI9;

CLRFWEIA;

RETURN;

;————————————————————————

CV:

BTFSSWEI1,0;

RETURN;

MOV LWB’11100000’;

ANDWFWEI1,W;

BTFSSSTATUS,Z;

RETURN;

MOV FADRES,W;

XORWFWEI8,W;

BTFSSSTATUS,Z;

GOTOCLEAR;

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/346920.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部