ImageVerifierCode 换一换
格式:DOCX , 页数:71 ,大小:37.10KB ,
资源ID:15491101      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15491101.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机实用汇编程序库.docx)为本站会员(b****7)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

51单片机实用汇编程序库.docx

1、51单片机实用汇编程序库51 单片机实用程序库、1 流水灯程序介绍:利用P1口通过一定延时轮流产生低电平输出,以达到发光二极管轮流亮得效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。程序实例(LAMP、A)ORG 0000JP INOG030HMAI:9MOV ,#00HV 1, ;灭所有得灯MOV ,111110BMAIN:OV ,;开最左边得灯ACALL LAY ;延时L A ;将开得灯向右边移AJMP MAIN;循环DEAY:MOV 30,FFHD1:MOV 1,0FHD2: DJNZ 3H,D2DJN H,D1REEND4、2 方波输出程序介绍:P1、0 口输出高电平,延时后再输出低电

2、平,循环输出产生方波。实际应用中例如:波形发生器。程序实例(FAN、A):RG0000AIN:;直接利用P1、0口产生高低电平地形成方波/ACLL DLAYSETB P1、AALL DEAY0CLR P1、0AMPIN;/DELY:OV R,0FDNZ R,$RETEND五、定时器功能实例、1 定时1 秒报警程序介绍:定时器1 每隔1 秒钟将p1、 得输出状态改变次,以达到定时报警得目得。实际应用例如:定时报警器。程序实例(DIN1、ASM):OG00AJM MAINORG 000BHAJMP N0 ;定时器 入口MI:FLA G EQ34H ;时间秒标志,判就是否到 个0、2 秒,即0*0、

3、2=1秒MTMOD,#0000001;定时器0工作于方式1MOT0,0AFMOVTH0,#3CH ;设定时时间为0、5秒,定时20次则一秒ETB E ;开总中断SETBE ;开定时器0 中断允许SE R0 ;开定时0 运行SET P1、0LP:AJMP LOOP0:;就是否到一秒/INCC: C TFLAMO A,TFAJNE A,20,REV TFLAG,#P1、0;/RE:MOVL,#0AFHMV 0,3H ;设定时时间为0、0秒,定时20 次则一秒RETIED5、2 频率输出公式介绍:f=1/ts1 使用M晶振,一个周期就是 微秒使用定时器1工作于方式,最大值为655,以产生200HZ

4、得频率为例:2001t:推出=0、0 秒,即50 微秒,即一个高电12平或低电平得时间为250 微秒。这样,定时值应设为55352500=33,将它转换为十六进制则为:F6B.具体程序请瞧f200、asm频率递增:200HZ:6303:63B50HZ:3535:F8230Z:63868:F97C5、3 00HZ频率输出程序介绍:利用定时器定时,在P1、0 口产生00HZ得频率输出.实际应用例如:传感器前级推动.程序实例(F20、ASM):OR0000AJP MAINO 0BHJM DIN0MIN:CLR P1、0 ;产生一个低电平,实际上就是从p1、0 口产生频率MOV TMOD,001000

5、0B;定时器1 工作于方式0MOTH,F6MOV T1,3BH;频率产生得时间,详细请见频率公式ETB E ;开总中断13ETB R1 ;开定时器 运行SETB ET1;开定时器1 允许LO:AP LOOP;无限循环DN:CPL P1、 ;产生一个高电平,下次来就就是低电平(因为取反),一个高电平与一个低电平形成一个周期M TH1,#0FOV T1,#3BH;重置频率产生时间RETI ;返回END5、4 025HZ变化频率输出程序介绍:利用定时器定时时间得变化,由1、 口产生200-50Z变化得频率。实际应用例如:传感器前级推动、频率发生器。程序实例(F250、AM):ORG000HJMP A

6、NORG 01BAJMP A:;定义频率0与300/2H 30FEU 31H3 EQU 32HF3L EQU 33H;/;定义频率保持初值/M R1,50MOV R2,02H;/;频率赋初值/VF2H,#F6MOVF2L,#HOV F3H,#0F8HMV F3,2FH;/LR 、0 ;在1、 口产生一个低电平,一个脉冲就是由一个高电平与一个低电平组成得MOV MOD,001000B ;定时器工作于方式1MV T,F2HMOV L1,F2L ;200H 输出ET EA ;开总中断SETBTR1;开定时器运行STBT;开定时器1 允许LO: AJP LOPD:PL1、0;取反P1、0 口,实际就是

7、为了不断得将p1、0 得电平关系转换,即产生了频率;频率保持时间/NZ R,REMOV ,#0DNZ R2,OV R2,#0215;/MOV A,2HCJN A,F3,XA ;频率高位到00HZ得高位了吗?JMJIA ;频率高位没到300 得高位值,直接将低位值加1XIA: INCF2LO A,F2LNE A,#00H,REINC F2MVA,F2HCN ,F3H,RE;/;频率高位加到300HZ 得高位值了,低位加一,到3H 得低位值了吗,没到出去,到了关定时器JIA:IC L ;到了将20Z 频率得低位加1MOV ,F2LN ,F3,RELR TR1;/E:MOV TH,F2HMV L1,

8、2LRETEND六、数显9999 显示程序介绍:利用S51 得串行口功能,实现数码管099 得循环显示。实际应用例如:电子计分牌。程序实例(999、AS):ORG 00HMAIN:G EQU30HSHEQU 3HBEI EQ 2HQINEQU 3 ;定义个十百千MOV GE,0HMOV SHI,MOVBI,#00HMO IAN,0;赋初值MV SC,00 ;串行口工作于方式0、同步移位;显示个,十,百,千/DISLAY:ACALELAY;延时V PTR,TTBMOV A,GEV ,+PMOV BUF,D1:JNB T,D117R MPTR,#SETTABOVA,SHOV A,A+PTROBUF

9、,AD2: JNB ,CLR TMV PTR,TTAOV A,BEIMOCA,A+PRMOV BUF,D: BTI,D3CL TIM DR,#ETTABMO A,QINMOVC A,+PTRMSBU,AD4:JNB ,D4LR;/;个,十,百,千得依次加一/NC GEEO A,GEECNE ,0,DISPLMOV E,00NC SHM A,HI ,#0AH,ISPY18MOVSI,00HIC BEIMOV ,BEICJNE,0A,DISPLAYMO BI,#0HINQINMVA,QIANCJNEA,0AH,DISPAYMOVQIAN,#00HJMPISPA;/;延时/DELAY: MOV R1

10、,0FHE:MV R2,#0FFHDJN R2,$DJN1,1T;/SETTAB:DB 0FCH,60H,0DAH,0F2H,66H,6H,0BEH,00H,0FEH,F6,0EH,3EH,9CH,AH,9H,8EH ;数显代码ND七、A 转换、1AD 转换(数码显示)程序介绍:利用ADC0809模拟通道3 输入电压,经单片机19处理后在数码管上用相对应得6进制数显示出来,05V 对应为0-0FFH,实际应用例如:数据采集。程序操作:程序写完上电运行后,用本机配带得专用起微调图15 所示电位器,会在数码管上瞧到随不同电压而变化得对应 进制值。也可以用万用表实ADC09IN3脚电压,来检验所对应

11、显示得6 进制数。图15程序实例(ad、s):OR 0000HAN:ACALL DEAY ;延时ACALL AD;呼叫AD子程序;将转换得数字量屏蔽高位低位送显/MOV 31,30HMOV ,30HANL ,0FHMOV PR,#SETTABMOVC A,APTRMO SBUF,AD1:JNB TI,D T;/;将转换得数字量屏蔽低位高位送显/OV ,00ANL A,#0F0SP AMOVPR,#SETBMOVC A,ADPTRMOV BF,A2: BI,CLR TI;/AJM AN1 ;返回主程序AD: MOV DPR,7F0 ;指向转换地址MOV A,#03 ;指向转换口MX PTR,A

12、;转换MV R,#6D3: DJN R,3 ;等10 微秒转换完MOX A,DT ;转换后得值给AMO 30H,A;转换得值给30HRTDEY: ;延时MOVR2,#0FFHD1: MOV R3,0F2: DJNZ R3,D12NZR2,D14ETSETAB:D 0F,60,0H,02H,H,BH,0BEH,0EH,0EH,06H0EEH,3EH,C,7AH,EH,8EH17、2 十六进制两位数加法器(数码显示)程序介绍:将DC080 输入得两个不同电压(相同电压也可相加,只就是为举例说明,所以取不同电压)所对应得16进制数相加显示出来。实际应用例如:取代加法运放电路.程序操作:程序写完上电运

13、行后,用本机配带得钟表起微调图1 所示电位器,输入两个不同电压,数码管会显示两个不同得对应进制数,随后数码管会显示两个6进制数相加得值.程序实例(dd、m):ORG0000HMI:ADNUMBEREQ H;AD 转换值DDMBER EQ 31H ;加数值1AD EQ 32H ;/AH EQ 33H;ADL 转换高低位值DISEQU H ;/DSHEU 5H;显示高低位值ADDTOTAEQU 36 ;第一次AD 转换值DJ EQ 3 ;加法进位数AHOL EQU 3;赋初值/MOV DDOLD,#0HOADDNUR,00HMO ADL,HMV ADH,#00HMOV DISL,#00O ISH,

14、MV DDJ,00HO ADTTAL,#00H;/MIN1:CAL D ;呼叫子程序ACLL DELA ;延时CAL CAIFEN ;呼叫AD 值拆分为高低得程序ACA DSLAY ;呼叫显示子程序MOV A,ANBER;取D 值CJNE ,ADDHOLD,ADD ;与上次AD 值比较,不相等,即输入了新得AD 值,去AD3 执行AJMP MAIN1 ;就是相等得,证明没有输入新得AD 值,回去显示老得A 值AD3: MOV A,ADDOLDCJN A,0,A4MOVADHOLD,ADNUMBER ;有一种情况就就是就是第一次进来,A 保持值里面就是放得初值0,与取得A 值不同,就是这种情况,

15、也返回去JM MAIN1AD4: MOV ADUMBER,DDHOD ;就是真得输入了新得AD 值,将上次AD 值给加数,为调加法程序做准备MOV DDHLD,ANUMBER ;将这次得AD值也保持起来.准备与上一个D值相加;显示这次输入得A 值/ACLL DELAYACLL CIFE23AALL ISPAY;/PAY1:ALL DEAY ;延时CALL D1 ;呼叫加法子程序ALL DISLAY;显示OP: JM LOO ;返回主程序;/AD 转换AD:MOV DT,#7F00H;指向转换地址OA,03H ;指向转换口MXDTR,A;转换MOVR1,64HD1:DNZ R1,D1;等10 微

16、秒转换完MVXA,DPTR ;转换后得值给MOVDNBE,A;转换得值给0RET;/;拆分 值程序/CEN:MO ,ADNUBENL ,0FMOV AD, ;取低位O A,ANUMBERAL ,#00HSA MOV DH,A ;取高位MOV DIL,AL24MOV DIH,ADH ;给显示值RET;/;显示/SPAY:MOV A,DSOV DPTR,#SETABOV A,A+DPTMOV S,D3: JB TI,D3CLRTIMO A,DSHMOVDPR,STBVCA,+DPMOV SBF,AD4: JNB T,D4CLR TMOV ,AJWMODPT,STTABMOC A,A+PR UF,A

17、D: JN TI,D5LR TOV UF,#00D6:JN TI,DCLRTET;/25;加法程序/ADD1:CLR CMOV A,ADNMBR ;取上次AD 值ADC A,HOL ;与这次AD值相加MO ADDTOTAL,;将此次加得值给与值JNC DJW1 ;有无进位?I ADDJW ;有进位,进位值给ADDJWADDJW1: ANLA,0FHMOV DSL,A ;加值取低位M A,ADDTOALANL A,0HSWP AMOV DIH,A ;加值取高位RE;/DELA:;延时O ,#0AHDD1:MOV R1,#0FFH2 : M 2,#FFHDJNZ R2,$DJNZ R1,DJ R3

18、,DD1ETT:DB 0FC,,0AH,FH,6H,06H,0EH,00H,60FEH,0FHDB 0EE,EH,9CH,7H,9EH,HEND7、 软件滤波程序介绍(7、3、4):您如果接触过模电就知道,在采集电压量时经常会碰到干扰,而在模电中经常所采用得方法就就是加电容滤波,这就是用硬件实现得.实际上软件完全可以达到滤波得效果,现在介绍得就是一种最经典得方法。在一次电压量得采集中,在很短得时间内对它进行次采集,将它转换为数字量后求与(、3),分析出次输入中得最大值与最小值(、32),然后减去最大值与最小值(7、3),除以4(7、44)得到平均值.这样实际上就完成了一次软件滤波。省去了复杂得

19、硬件,而且取得了好而精确得效果。实际应用例如:精确数据采集。程序操作:程序写入上电运行后,用本实验仪自带得钟表起微调电位器依次输入6 个电压量.7、 程序会显示与值,、32 会继续显示最大与最小值,7、33程序会继续显示减后所剩得值,7、4程序会继续显示除4后得值。算法说明:为什么要选择取 个数进行计算呢?因为在汇编中做计算就是非常麻烦得,取6 个数,减去最大值与最小值后,取平均值就是除4、计算机得内部计算都就是二进制,而二进制每除一个2,实际上就是向右移一次.所以为了计算方便,我们选择取 个数,最后在算除法得时候,只需要用单片机自带得右移位命令移2次就行了.77、31 十六进制六位数加法(数

20、码显示)程序实例(add6、sm):ORG 0000HMAN:ANUMBER EQU 3H ;AD 转换值ADDNUMER EQU31H ;加数值ALEU 32H;/ADH EQU 33H ;DL 转换高低位值DSL EQU 4H ;/SH EQ 3H;显示高低位值DDTOAL EQU 6 ;第一次AD 转换值ADJEQ 37 ;加法进位数ADDHLEQ 38DFLA QU39 ;加标志ENDFLA QU 40;赋初值/MV ADDHOLD,0HMOV ADNUMBER,0HMOV AD,#0HMOV,#0MOV DIL,#0HO DISH,0HOVD,0HOVADLAG,0HMOENDFLA,#00HMVADDTOL,0H;/MAIN1:28;显示AD 值/ALL DLAYCL DELACALLMAIN3:ACALLCANACALDSPY;/;加这次得

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2