单片机常用,常考程序

单片机常用,常考程序

ID:47401167

大小:67.01 KB

页数:4页

时间:2019-07-05

单片机常用,常考程序_第1页
单片机常用,常考程序_第2页
单片机常用,常考程序_第3页
单片机常用,常考程序_第4页
资源描述:

《单片机常用,常考程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、单片机常用,常考程序breeze1.二进制数转换为BCD码,将累加器A中的二进制数0~FFH内的任一数转换为BCD码(0~255)(1)题意分析BCD码是每4位二进制数表示一位十进制数,本例所要求转换的最大BCD码为255,表示成BCD码需要12位二进制数,超过了一个字节(8位),因此我们把高4位存放在B的低4位,高4位清零;低8位存放在A中。0000001001010101BA转换的方法是将A中二进制数除以100、10,所得商即为百、十位数,余数为个位数。(2)汇编语言源程序;程序名:BINBCD;功能:

2、二进制数转换为BCD码;入口参数:要转换的二进制数存在累加器A中(0~FFH);出口参数:转换后的BCD码存放在B(百位)和A(十位和个位)中BINBCD:PUSHPSWMOVB,#100DIVAB;除法指令,A/B→商在A中,余数在B中PUSHACC;把商(百位数)暂存在堆栈中MOVA,#10XCHA,B;余数交换到A中,B=10DIVAB;A/B→商(十位)在A中,余数在B(个位)中SWAPA;十位数移到高半字节ADDA,B;十位数和个位数组合在一起POPB;百位数存放到B中POPPSWRET2.查表子

3、程序。假设a、b均小于10,计算c=a2+b2,其中a事先存在内部RAM的31H单元,b事先存在32H单元,把c存入33H单元。(1)题意分析本例两次使用平方的计算,在前面的例4.9中已经编过查平方表得到平方值的程序,在此我们采用把求平方编为子程序的方法。(2)汇编语言源程序ORG0000H;主程序MOVSP,#3FH;设置栈底MOVA,31H;取数a存放到累加器A中作为入口参数LCALLSQRMOVR1,A;出口参数——平方值存放在A中MOVA,32HLCALLSQRADDA,R1MOV33H,ASJMP

4、$;子程序:SQR;功能:通过查表求出平方值y=x2;入口参数:x存放在累加器A中;出口参数:求得的平方值y存放在A中;占用资源:累加器A,数据指针DPTRSQR:PUSHDPH;保护现场,将主程序中DPTR的高八位放入堆栈PUSHDPL;保护现场,将主程序中DPTR的低八位放入堆栈MOVDPTR,#TABLE;在子程序中重新使用DPTR,表首地址→DPTRMOVCA,@A+DPTR;查表POPDPL;恢复现场,将主程序中DPTR的低八位从堆栈中弹出POPDPH;恢复现场,将主程序中DPTR的高八位从堆栈中

5、弹出RETTABLE:DB0,1,4,9,16,25,36,49,64,813.不同存储区域之间的数据传输。将内部RAM30H单元开始的内容依次传送到外部RAM0100H单元开始的区域,直到遇到传送的内容是0为止。(1)题意分析本例要解决的关键问题是:数据块的传送和不同存储区域之间的数据传送。前者采用循环程序结构,以条件控制结束;后者采用间接寻址方式,以累加器A作为中间变量实现数据传输。程序流程图如图4.16所示。图4.16例4.8程序流程图(2)汇编语言源程序ORG0000HMOVR0,#30H;R0指向

6、内部RAM数据区首地址MOVDPTR,#0100H;DPTR指向外部RAM数据区首地址TRANS:MOVA,@R0;A←(R0)MOVX@DPTR,A;(DPTR)←ACJNEA,#00H,NEXTSJMPFINISH;A=0,传送完成NEXT:INCR0;修改地址指针INCDPTRAJMPTRANS;继续传送FINISH:SJMP$END4.设单片机系统的时钟频率为12MHz利用定时器T0(任选工作方式),编写一个完整的C51程序使P1.6和P1.7分别输出周期为1ms和2ms的方波信号(占空比为50%)

7、ORG0000HLJMPMAINORG000BHLJMPTIME0MAIN: MOVTMOD,#01H ;设置T0为工作模式1 MOVIE,#82H  ;开CPU中断,开T0定时器中断 MOVTH0,#0FCH ;赋初值,定时1ms MOVTL0,#18H MOV4FH,#2  ;2ms计数单元 SETBTR0  ;启动T0 SJMP$   ;没有事干了,空等待TIME0: MOVTH0,#0FCH ;赋初值,定时1ms MOVTL0,#18H CPLP1.6  ;1ms到,P1.7取反输出 DJNZ4FH

8、,EXT0  MOV4FH,#2  ;2ms到,P1.7取反输出 CPLP1.7EXT0:RETI   ;中断返回 END5.汇编语言编程计算片内ram区50H-57H单元中的算术平均值,结果存放在5AH中。MOVR0,#50HMOVR2,#0MOVR3,#0LOOP:MOVA,@R0ADDA,R3MOVR3,AJNCNEXTINCR2NEXT:INCR0CJNER0,#58H,LOOP;求和结束,下面求平均.A

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。