单片机实验设计:要求使用8951系列单片机,设计脉宽占空比50%,25%可调的脉冲发生器,周期2秒。
P1.1输出PWM。
P3.3接开关,低电平时占空比50%、高电平时占空比25%。
问题补充:晶振是6MHz。
;=================================================
最佳答案:
;下列程序,经过编译、仿真,符合要求。
;-------------------------------------
ORG 0000H
JMP START
ORG 000BH
JMP T0_INT
;-------------------------------------
START:
MOV TMOD, #01H
MOV TH0, #9EH
MOV TL0, #58H ;50ms@6MHz
SETB TR0
SETB ET0
SETB EA
MOV R2, #10
LOOP:
CLR PSW.5
CLR P1.1 ;输出0,这是一个周期的开始
JNB PSW.5, $ ;等待500ms
CLR PSW.5
JNB PSW.5, $ ;再等待500ms
CLR PSW.5
MOV C, P3.3 ;输入,如果P3.3为低
CPL C
MOV P1.1, C ;就输出高,这就是50%占空比
JNB PSW.5, $ ;继续等待500ms
CLR PSW.5
SETB P1.1 ;如果到这里才输出高,就是25%占空比
JNB PSW.5, $ ;输出高500ms
SJMP LOOP
;-------------------------------------
T0_INT: ;50ms执行一次
MOV TH0, #9EH ;重新赋初始值
MOV TL0, #58H ;50ms@6MHz
DJNZ R2, T0_END ;不到10次,转到退出
; ;下列指令都是每隔500ms执行一次
MOV R2, #10 ;重新设置
SETB PSW.5 ;每隔500ms,设置一次1
T0_END:
RETI
;-------------------------------------
END
;-------------------------------------
编译后的机器语言,仅仅用了74字节
上一篇:单片机汇编语言编程:按键、计数及显示
下一篇:单片机编程:找出最大数,并存入BIG单元中
推荐阅读最新更新时间:2024-03-16 16:02