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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、51单片机实用汇编程序库精品51单片机实用汇编程序库1 单片机实用程序库4.1 流水灯程序介绍:利用1 口通过一定延时轮流产生低电平输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。程序实例(MP.S)ORG 000JMP AIRG 0030MN:9MOV A,00HMO,A ;灭所有的灯MOVA,11111BMA:OVP1,A;开最左边的灯ACAL DLAY;延时 A ;将开的灯向右边移AP MAIN ;循环DLAY:MV 3H,#0FFH1:MV 3H,#0F: JZ 31H,D2DNZ 30H,DEEND42 方波输出程序介绍:P10 口输出高电平,延时后再输

2、出低电平,循环输出产生方波。实际应用中例如:波形发生器。程序实例(FN.AS):RG0000MAIN:;直接利用P1.0 口产生高低电平地形成方波/ACAL LSTP1.0ALL DELAY0L1.0AJMMIN;/DEL:MOV 1,#HDJNR1,RETND五、定时器功能实例51 定时1 秒报警程序介绍:定时器1 每隔 秒钟将p1. 的输出状态改变1次,以达到定时报警的目的。实际应用例如:定时报警器。程序实例(DIN.ASM):O 00HAJPMNRG 000BHAMP D0 ;定时器入口A:TFLA G QU ;时间秒标志,判是否到5 个0 秒,即5021 秒MOV TOD,000000

3、1B;定时器0工作于方式1M TL0,#0AFHMOV H0, ;设定时时间为0.0 秒,定时20 次则一秒11STB EA ;开总中断SETB E0;开定时器 中断允许SET TR0;开定时 运行SE P0OOP: AJPLOOPDIN:;是否到一秒/INCC: INLAGMO A,TFLAGCJNE A,#20,REMV TLG,0HCPL 0;/RE:MOVT,#AFHMOV T0,3C;设定时时间为0.5 秒,定时次则一秒RETIND5.2频率输出公式介绍:f=t5 使用12M 晶振,一个周期是微秒使用定时器1工作于方式,最大值为5535,以产生20Z的频率为例:001/t:推出=0.

4、005 秒,即500 微秒,即一个高电12平或低电平的时间为500微秒。这样,定时值应设为653525006303,将它转换为十六进制则为:F6。具体程序请看f200sm频率递增:20HZ:6305:6B2HZ:63:F830HZ:6386:F9.3 00Z 频率输出程序介绍:利用定时器定时,在0 口产生20H的频率输出。实际应用例如:传感器前级推动。程序实例(F20.SM):ORG000HAMAIORG 001BHJP DN0MAN:R P.0;产生一个低电平,实际上是从p1.0口产生频率MOV TMO,#10000B ;定时器1工作于方式OV T1,#0F6MOV TL,#3B ;频率产生

5、的时间,详细请见频率公式E EA ;开总中断13STBR1 ;开定时器1 运行SEB ET1;开定时器允许O:AJMPP ;无限循环DIN:CP P.0 ;产生一个高电平,下次来就是低电平(因为取反),一个高电平和一个低电平形成一个周期MV TH1,#0F6MOV TL1,#3;重置频率产生时间RTI ;返回END5. 2050Z 变化频率输出程序介绍:利用定时器定时时间的变化,由P1. 口产生20020H 变化的频率。实际应用例如:传感器前级推动、频率发生器。程序实例(F250.ASM):OR 0000AJMPAIORG 001BHAJPDIN1AIN:;定义频率20 和300/F2H QU

6、2E 31HEQU 3HF3LU H14;/;定义频率保持初值/OVR1,5MOV R2,#02H;/;频率赋初值/MOV F2H,#06HOV F2,#3BHMOV H,#0F8MOV F3L,2F;/RP10 ;在10 口产生一个低电平,一个脉冲是由一个高电平和一个低电平组成的MOV TMD,#0010000B ;定时器工作于方式1MOV 1,2HMV TL1,F2L;200Z 输出SETB EA;开总中断SETB TR;开定时器1 运行SETB ET1 ;开定时器1 允许LOOP: JMPOOPDIN1:CPL P1. ;取反P.口,实际是为了不断的将1.0 的电平关系转换,即产生了频率

7、;频率保持时间/DJNZ R1,REMV R,#50DJNZR,RMOV R,#0H15;/MOV A,FHCJNE A,3H,XA ;频率高位到30HZ的高位了吗?AJMP JIA ;频率高位没到30HZ 的高位值,直接将低位值加IA: ICLMV A,F2LCJE,#0H,REINF2MOV A,F2HCJNEA,F3,RE;/;频率高位加到300Z 的高位值了,低位加一,到300 的低位值了吗,没到出去,到了关定时器JIA:IC F2L ;到了将0HZ 频率的低位加OVA,LCJNA,F3L,RCLR TR1;/RE:M TH1,F2H TL1,LREIEND1六、数显0999 显示程序

8、介绍:利用5 的串行口功能,实现数码管999的循环显示。实际应用例如:电子计分牌。程序实例(999.SM):OR 000HMIN:EEEU 30HSHI EQ31HBEI QU 3HQANQ 3H;定义个十百千MOV GEE,#00HOVSI,#0HMV BE,#0HMOV QIAN,0H ;赋初值MOV SON,#0H ;串行口工作于方式0.同步移位;显示个,十,百,千/IPLA:AAL L ;延时MOV DP,ETTAMOVA,EEMOCA,A+DPRMOVSBUF,D: NB T,11CLR MOVDPTR,#TTABV A,SHMO ,A+DPTRV BUF,A2: JNBTI,DLR

9、 OV PTR,#SETTABMV A,EIMVC A,A+DPTRMOSBU,D3: JNBI,D3CR TIMO PTR,#SETTABMO A,QIANMOC A,A+DPTRMOVSBU,D4: JNB TI,4R TI;/;个,十,百,千的依次加一/IN GEEMOV A,GECJN A,#0AH,DISPLAYMOV EE,#0HINC SHMOV ,SHICNE A,#0A,DISLA8MOV SI,#00HIN BEMOV A,BEICJNE A,#0H,DILYMV BE,#HINC QINM A,QINCJNE A,0A,IPLAMOV QIA,#00JP DISPLAY;

10、/;延时/DLAY: M 1,#0FFE1: MOVR2,#0FFHJNZ R2,$DJNZR1,ERT;/TTAB:D 0H,60H,0DH,02H,66,0H,BEH,E0H,0FEH,6H,EH,3,CH,7AH,EH,E ;数显代码D七、AD转换7.1AD 转换(数码显示)程序介绍:利用AC009 模拟通道3 输入电压,经单片机处理后在数码管上用相对应的1 进制数显示出来,V对应为-0H,实际应用例如:数据采集。程序操作:程序写完上电运行后,用本机配带的专用起微调图1 所示电位器,会在数码管上看到随不同电压而变化的对应16 进制值。也可以用万用表实AD08IN 脚电压,来检验所对应显示

11、的1 进制数。图15程序实例(d.m):OR00HMAI1:CALL DEY ;延时ACL AD ;呼叫子程序;将转换的数字量屏蔽高位低位送显/MOV 1,0HMO,30AN A,#0HMO DPR,SETTABMOVC A,A+DPTRMOV SBUF,1: JB TI,DCLR TI;/;将转换的数字量屏蔽低位高位送显/MV ,20AL A,#FWA OVDTR,#ETABMC ,+DTRMOV B,AD2:JNI,D2CLRTI;/AJM AI1 ;返回主程序AD:MOV PTR,7F00H ;指向转换地址MOA,#03 ;指向转换口MVX DPR,A;转换MOVR1,#4D: DJNR

12、1,D3;等100 微秒转换完OVX A,DTR ;转换后的值给AMOV 0, ;转换的值给3RETDLY:;延时MOR2,#FHD14:MOV R,#FFHD12: DJNZ R3,D12DJNZ R2,1RTSTTAB:B 0FH,H,DAH,02,66H,0B6H,0BEH,0E0,0EH,F6HD 0EEH,3EH,H,7AH,9H,8EH217. 十六进制两位数加法器(数码显示)程序介绍:将AC089 输入的两个不同电压(相同电压也可相加,只是为举例说明,所以取不同电压)所对应的16 进制数相加显示出来。实际应用例如:取代加法运放电路。程序操作:程序写完上电运行后,用本机配带的钟表起

13、微调图6 所示电位器,输入两个不同电压,数码管会显示两个不同的对应16 进制数,随后数码管会显示两个6进制数相加的值。程序实例(ad.sm):ORG 0000MAIN:ANUMBER U0H ;AD 转换值ADDNMER EQU 31 ;加数值1DL U 32H ;/AH EQ 33H ;ADL 转换高低位值DISL QU3H ;/ISH EQH ;显示高低位值ADDTTAL EU H;第一次D转换值ADW EQU 3H ;加法进位数ADHOLD EU H;赋初值/MO ADDL,#0HMOADUMBER,0HV ADL,#00HM ADH,0HMOV DISL,00H2MOV DISH,#0

14、0HMOV DJW,00HMOVADDTOTAL,#00H;/MAI1:ACLLAD;呼叫AD 子程序ACALL ELY ;延时CLL CAIFEN;呼叫AD 值拆分为高低的程序AAL DISLA ;呼叫显示子程序MOV A,ADNUMBER;取AD 值CJNE A,ADOLD,D3 ;与上次AD值比较,不相等,即输入了新的D值,去D3 执行J MAIN ;是相等的,证明没有输入新的AD 值,回去显示老的D值AD3:OV A,DDHLDJNE A,#00H,ADD4MOV ADHLD,DMBER ;有一种情况就是是第一次进来,D 保持值里面是放的初值0,与取的AD值不同,是这种情况,也返回去J

15、M AIN1ADD: MO NUBER,ADDHD ;是真的输入了新的D 值,将上次D 值给加数,为调加法程序做准备MOV ADDHOL,ADMBE ;将这次的AD值也保持起来。准备与上一个AD 值相加;显示这次输入的D 值/ALL DELAYCALL CIEN23CLL DISPLA;/DISPLA:ACALDE ;延时LL ADD1;呼叫加法子程序C DISY ;显示LOP:AJMPLOP ;返回主程序;/AD 转换:MO DPT,#F0H;指向转换地址O A,0H;指向转换口VXDPTR,A ;转换MO R1,#64D: DJNZ R1,1 ;等10 微秒转换完MOVX A,PR;转换后

16、的值给AMO DNUMBER,A;转换的值给0RT;/;拆分A 值程序/CE:MOV A,ADNMEANL A,#0HMOV A,A ;取低位MOV A,ADMERNL A,#F0HSWAP MOV ADH,A;取高位MOV DISL,ADL24MOV DISH,AH ;给显示值R;/;显示/ISPLAY:OV,DSMOV DR,ETTBVC A,DTRMOVSBUF,A3: N TI,D3LR TIMO A,ISHV DP,#SETTABMOVCA,A+PTRMOV SBUF,AD4: JNB I,D4CLR TIMO A,DDJWMOV DPTR,#SETTABMOVC A,ADPTRMO

17、VSBUF,AD5: B TI,D5CLR TIOV SBUF,00HD6:JBTI,D6C RE;/25;加法程序/1:LR MV A,ADDMBER ;取上次AD 值ADCA,AOL ;与这次D值相加MOV ADDTOTAL,A ;将此次加的值给和值JNC ADDW ;有无进位?IN ADJW ;有进位,进位值给ADDJWADJ1: NL ,#0HMOVDISL,A ;加值取低位MO A,ADDTOLANL A,#F0HSWAAMOV DIS, ;加值取高位ET;/ELA: ;延时MV R3,#0HDD1: MOV R1,#0FFHD2 :MO 2,#0FFHDJN R2,$DNZR,DJ

18、NZ R3,D1REETTAB:DB 0FCH,60H,0AH,0F2H,66H,0BH,0BH,0E0,20EH,0FHDB 0EEH,3EH,9,7AH,9EH,EHED7.3 软件滤波程序介绍(7.317.34):您如果接触过模电就知道,在采集电压量时经常会碰到干扰,而在模电中经常所采用的方法就是加电容滤波,这是用硬件实现的。实际上软件完全可以达到滤波的效果,现在介绍的是一种最经典的方法。在一次电压量的采集中,在很短的时间内对它进行次采集,将它转换为数字量后求和(7.31),分析出 次输入中的最大值和最小值(.32),然后减去最大值和最小值(733),除以4(7.4)得到平均值。这样实际

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

20、.1 十六进制六位数加法(数码显示)程序实例(d6.am):O 00HAIN:DNUMB EU 30 ;AD转换值ADDUBER EQU 1H ;加数值1D EQU2;AD EQU 3H ;ADL 转换高低位值ISL EQU 34 ;/ISHEU35H ;显示高低位值ADDTOTL EQU 6 ;第一次D 转换值DDJW EQU ;加法进位数ADDHOLD EU 38HAFLAG QU 3H ;加标志NDLAGEQU40H;赋初值/MV ADDHOL,#0HOVADDNUBE,#0HMOV AD,#0OV AH,#00HO ISL,0MODIS,#00HMO ADDJW,#HO ADDFLA,00HO ENDFA,#00MOV ADDOT,#0H;/MAIN:28;显示AD 值/ACAL DELAAAL DEYCAL AAIN3:ACALL CIENAALL ISAY;/

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

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