单片机子程序(汇编)教程.docx

单片机子程序(汇编)教程

T0/T1产生方波: 知识点:中断,定时/计数器 TCON寄存器: TMOD寄存器: ①用计时器T0使P1.0口输出1Hz (%50占空比) 的方波; ②通过P1.0口使发光二级管闪烁(0.5s)。 ORG 0000H LJMP START ORG 000BH ;T0 LJMP SJDL ;伪指令 ORG 0030H START: MOV TMOD,#11H ;把T0、T1都置成16位定时器 MOV TL0,#176 ;65536-15536=50000μs MOV TH0,#60 ;设置计数器,定时50ms SETB TR0 ;启动定时器T0 SETB EA ;打开总开关 SETB ET0 ; 打开分开关 MOV R7,#10 ; 设置延时(10*50ms=0.5秒) MOV B,#0FFH; XX1: NOP NOP ;死循环/ 主程序 NOP LJMP XX1 SJDL: MOV TL0,#176 ; MOV TH0,#60 ;重置计数器 DJNZ R7,SS1 CPL P1.0 ; 取反 MOV R7,#10 SS1: RETI ;返回主程序 用计时器T1使P1.6口输出1Hz (%30占空比) 的方波 ORG 0000H LJMP START ORG 001BH ;(T1) LJMP SJDL ORG 0030 START: MOV TMOD,#11H T1、T0都为方式一,定时器模式 MOV TH1,#60 ;或者(#3CH) MOV TL1,#176 ;0B0H 定时50ms SETB TR1 ;启动定时器T1 SETB EA ; SETB ET1 ; MOV R7,#6 ; LOOP: NOP NOP LJMP LOOP SJDL: MOV TL1,#176 ;重置计数器 MOV TH1,#60 ; DJNZ R7,XX1 ;减一不为0则转移 CPL P1.6 ;取反 MOV R7,#6 ;设置延时(6*50ms=0.3秒) JB P1.6,XX1 ;若P1.6为高(1)则跳 MOV R7,#14 ;设置延时(14*50ms=0.7秒) XX1: RETI 用计时器T0使P1.0口输出10Hz (%50占空比) 的方波; ORG 0000H LJMP START ORG 000BH ;T0 LJMP SJDL ORG 0030H START: MOV TMOD,#11H MOV TL0,#176 ;65536-15536=50000μs MOV TH0,#60 ;设置计数器,定时50ms SETB TR0 SETB EA SETB ET0 XX1: LJMP XX1 SJDL: MOV TL0,#176 ; MOV TH0,#60 ; CPL P1.0 ERTI ⑤ 波特率的计算方法: 假若现在单片机外接的晶振为11.0592MHz时,以T/C2作波特率发生器,根据波特率公式: 波特率=Fosc/2x16x(65536-t) 9600=11.0592MHz/2x16x(65536-t) t=65500=0xFFD 内存,置数‘’ 将 20H ~ 7FH 置01H MOV R0,#20H

文档评论(0)

1亿VIP精品文档

相关文档