汇编51单片机功能实现
单片机晶振为12MHz,用定时器编程输出10ms的方波,采用中断方式实现。
参考程序如下:
ORG 0000H
LJMP MAIN
ORG 000BH T0中断入口
LJMP TOP 调用中断程序
ORG 0100H
MAIN:MOV SP,#60H 堆栈指针
MOV TMOD,#01H 设置定时器T0为方式1
MOV TH0,#0ECH 定时器高8位
MOV TL0,#78H 定时器低8位
SETB EA 允许总中断
SETB ET0 允许T0中断
SETB TR0 开始计时
SETB P1.0 P1.0为输出口
SJMP $ 主程序自循环
TOP:PUSH PSW 堆栈保护
PUSH ACC
MOV TH0,#0ECH 给定时器赋初值
MOV TL0,#78H
CPL P1.0. 取反P1.0
POP ACC 岀栈
POP PSW
RETI
END
二… 200 - 250HZ变化频率输出
程序介绍:利用定时器定时时间的变化,由P1.0口产生200一一250HZ 变化的频率。实际应用例如:传感器前级推动、频率发生器。
参考代码如下:
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP TOP
ORG 001BH
LJMP TO
ORG 0100H
MAIN: MOV SP,#60H
MOV TMOD,#11H
MOV TH0,#03CH
MOV TL0,#0AFH
MOV TH1,#0ECH
MOV TL1, #077H
MOV R6,#077H
MOV R7,#0ECH
MOV R5,#0
SETB EA
SETB ET0
SETB ET1
SETB TR0
SETB TR1
SETB P1.0
TOP: PUSH PSW
PUSH ACC
MOV TH0,#03CH
MOV TL0,#0AFH
CJNE R5,#1,LL
DEC R6
CJNE R6,#00H,L
MOV,R6,#0FFH
DEC R7
CJNE R7,#0ECH,L
MOV R5,#1
SJMP L
LL: INC R6
CJNE R6,#0FFH,L
INC R7
CJNE R7,#0F0H,L
MOV R5,#0
L: POP ACC
POP PSW
RETI
TO: PUSH PSW
PUSH ACC
MOV TH1,R7
MOV TL1,R6
CPL P1.0
POP ACC
POP PSW
RETI
END