单片机子程序汇编.docx
- 文档编号:3011460
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:15
- 大小:496.50KB
单片机子程序汇编.docx
《单片机子程序汇编.docx》由会员分享,可在线阅读,更多相关《单片机子程序汇编.docx(15页珍藏版)》请在冰豆网上搜索。
单片机子程序汇编
1.T0/T1产生方波:
知识点:
中断,定时/计数器
TCON寄存器:
TMOD寄存器:
①用计时器T0使P1.0口输出1Hz(%50占空比)的方波;
②通过P1.0口使发光二级管闪烁(0.5s)。
ORG0000H
LJMPSTART
ORG000BH;T0
LJMPSJDL;伪指令
ORG0030H
START:
MOVTMOD,#11H;把T0、T1都置成16位定时器
MOVTL0,#176;65536-15536=50000μs
MOVTH0,#60;设置计数器,定时50ms
SETBTR0;启动定时器T0
SETBEA;打开总开关
SETBET0;打开分开关
MOVR7,#10;设置延时(10*50ms=0.5秒)
MOVB,#0FFH;
XX1:
NOP
NOP;死循环/主程序
NOP
LJMPXX1
SJDL:
MOVTL0,#176;
MOVTH0,#60;重置计数器
DJNZR7,SS1
CPLP1.0;取反
MOVR7,#10
SS1:
RETI;返回主程序
3用计时器T1使P1.6口输出1Hz(%30占空比)的方波
ORG0000H
LJMPSTART
ORG001BH;(T1)
LJMPSJDL
ORG0030
START:
MOVTMOD,#11H;00010001,T1、T0都为方式一,定时器模式
MOVTH1,#60;或者(#3CH)
MOVTL1,#176;0B0H定时50ms
SETBTR1;启动定时器T1
SETBEA;
SETBET1;
MOVR7,#6;
LOOP:
NOP
NOP
LJMPLOOP
SJDL:
MOVTL1,#176;重置计数器
MOVTH1,#60;
DJNZR7,XX1;减一不为0则转移
CPLP1.6;取反
MOVR7,#6;设置延时(6*50ms=0.3秒)
JBP1.6,XX1;若P1.6为高
(1)则跳
MOVR7,#14;设置延时(14*50ms=0.7秒)
XX1:
RETI
4用计时器T0使P1.0口输出10Hz(%50占空比)的方波;
ORG0000H
LJMPSTART
ORG000BH;T0
LJMPSJDL
ORG0030H
START:
MOVTMOD,#11H
MOVTL0,#176;65536-15536=50000μs
MOVTH0,#60;设置计数器,定时50ms
SETBTR0
SETBEA
SETBET0
XX1:
LJMPXX1
SJDL:
MOVTL0,#176;
MOVTH0,#60;
CPLP1.0
ERTI
⑤波特率的计算方法:
假若现在单片机外接的晶振为11.0592MHz时,以T/C2作波特率发生器,根据波特率公式:
波特率=Fosc/2x16x(65536-t)
9600=11.0592MHz/2x16x(65536-t)
t=65500=0xFFD
2.内存,置数‘’
a)将20H~7FH置01H
MOVR0,#20H;
MOVR7,#96;次数
XX1:
MOV@R0,#01H
INCR0;
DJNZR7,XX1
②;区域指数,30H到39H置为1到10
ORG0000H
LJMPSTART
START:
MOVR1,#30H
MOVA,#01H
MOVR2,#10
XX1:
MOV@R1,A
INCR1
INCA
DJNZR2,XX1
END
3.排序
a)排序0,1,2,3...9--->9,8,7,6...0
ORG0000H
LJMPSTART
ORG0030H
START:
MOVR1,#90H
MOVA,#01H
MOVR2,#10
SETNUM:
MOV@R1,A;置数
INCR1
INCA
DJNZR2,SETNUM
SHORT:
MOVR0,#90H;首地址
MOVR2,#9;字节数
MOVA,R0
MOVR1,A;R1存放首地址,为了保存原始数据
MOVA,R2
MOVR4,A;R4中存放字节数,为了保存原始数据
CLRF0;判断是否交换
MOVA,@R1;取出第一个数,给A,A作为中间量,此时A=1
LOOP:
MOVR5,A;将第一个数赋值给R5,此时R5=1
INCR1
CLRC;清零进位位
MOVA,@R1;将第二个数也赋值给A,A还是作为中间量,此时A=2
SUBBA,R5;A=A-R5,R5值不变,此时A=1,C=0,R5=1
JCLOOP1;A SETBF0;设置交换位 MOVA,R5;此时A=1,R5=1 XCHA,@R1;此时A=2,@R1=1 DECR1;此时@R1=1 XCHA,@R1;此时A=1,@R1=2 INCR1;此时@R1=1 LOOP1: MOVA,@R1;将第二位数给中间位A,准备跳转到LOOP进行下一次排序 DJNZR4,LOOP;最高交换9次 JBF0,SHORT;如果还有交换发生,就从头开始,如果没有交换发生,则说明排 序完成 RET 4.累加 (一)寻址方式;(详细见教材P.44) ①寄存器间接寻址: MOVA,@Ri;i=0/1 如果Ri中的内容为40H,即从Ri中找到源操作数所在的单元的地址40H,然后把内部RAM40H地址单元中的内容传送给A。 2#Rn,立即数Rn,单元地址@Rn,间接寻址 ③基址寄存器+变址寄存器间接寻址 MOVCA,@A+DPTR 如果A中内容为05H,DPTR的内容为0400H。 指令的结果是把程序存储器0405H单元的数传送给A。 本寻址方式的另外2条: MOVCA,@A+PC JMP@A+DPTR (二)将30H~3FH中的数累加,和放到4041H MOVR0,#30H;首址赋给R0 MOVR7,#16;0~F共16个数 MOV40H,#00H; MOV41,#00H;4041H清零 LOOP: MOVA,@R0;将30H单元的数赋给A ADDA,41H;相加结果放入A MOV41H,A;A传送给41H MOVA,#00H;把A清零 ADDCA,40H;带进位加 MOV40H,A; INCR0;R0+1 DJNZR7,LOOP; (三)将20H~7FH中的数累加到R3R4中(BCD加法): MOVR0,#20H; MOVR7,#96; MOVR3,#00H; MOVR4,#00H; LOOP: MOVA,@R0; ADDA,R4;A+R4→A DAA; MOVR4,A; MOVA,#00H; ADDCA,R3;A+R3+Cy→A DAA; MOVR3,A; INCR0; DJNZR7,LOOP; 5.延时 a).;执行循环次数 MOV7DH,#K;1 XX3: MOV7EH,#M;K XX2: MOV7FH,#N;KM XX1: DJNZ7FH,XX1;KMN DJNZ7EH,XX2;KM DJNZ7DH,XX3;K 1重: 0.5ms 2重: 130ms 3重: 33ms (KMN+2KM+2K+1)×2T T: 机器周期(P36)振荡频率Fosc时钟周期Tosc=1/Fosc 机器周期Tcy=12×Tosc b)延时50ms DEL: MOVR7,#210 XX1: MOVR6,#117 XX2: DJNZR6,XX2 DJNZR7,XX1 RET 6.跑马灯 MOVA,#0FEH XX1: MOVP1,A LCALLDEL500 JNBP3.7,XX2;按下P3.7键,跑马灯加快 LCALLDEL500 XX2: JNBP3.0,XX3;按下P3.0键,跑马灯反向 RLA LJMPXX1 XX3: RRA LJMPXX1 DEL500: MOV7FH,#00H DEL1: MOV7EH,#00H DEL2: NOP NOP DJNZ7EH,DEL2 DJNZ7FH,DEL1 RET 7.串行口通信 a)发送程序 ORG0000H; LJMPSTART; ORG0030H; START: MOVTMOD,#21H;设置定时器工作方式(T0计时,T1波特率发生器) MOVTH1,#0FDH;设置波特率9600 MOVTL1,#0FDH; SETBTR1;启动定时器1 MOVSCON,#50H;设置串口工作方式,方式1 MOVA,#00H; XX1: JBP3.2,XX1;直接寻址位(P3.2)为1则转移 MOVSBUF,A;启动发送 JNBTI,$;TI为0则跳,等待发送完 CLRTI;清除标志位 INCA;累加器A增1 LCALLDEL100;长调用子程序 LCALLDEL100; LJMPXX1; DEL100: MOV7FH,#00H; DEL1: MOV7EH,#00H; DJNZ7EH,$; DJNZ7FH,DEL1; RET; b)接收程序 ORG0000H LJMPSTART ORG0023H LJMPJSYX ORG0030H START: MOVTMOD,#21H;T0计时,T1波特 MOVTH1,#0FDH;设置波特率9600 MOVTL1,#0FDH; SETBTR1;启动定时器1 MOVSCON,#50H;设置串口工作方式,方式1 SETBEA;打开总开关 SETBES;打开分开关 MOVA,#03H; LCALLFS MOVA,#03H; LCALLFS XX1: NOP NOP LJMPXX1 JSYX: CLRRI;清接收标志位 MOVA,SBUF;接收数据 MOVR1,A; MOVP1,A; ANLA,#0FH;A与
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 子程序 汇编