历史上的今天
今天是:2025年12月26日(星期五)
2022年12月26日 | PWM控制LED灯渐亮渐灭汇编程序
2022-12-26 来源:zhihu
;*******************************************************************
;* 演示程序 - PWM控制LED灯渐亮渐灭 *
;* 邮箱: mcuinfo@163.com *
;* 作者: keel *
;* 时间: 2005/11/30 *
;*【版权】Copyright(C)晶格电子 All Rights Reserved*
;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
;*******************************************************************
; PWM 控制 LED 灯渐亮渐灭程序
; 晶振为11.0592M
; 利用定时器控制产生占空比可变的 PWM 波
; 按K1,PWM值增加,则占空比减小,LED 灯渐暗。
; 按K2,PWM值减小,则占空比增加,LED 灯渐亮。
; 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。
;----------------------------
PWM EQU 7FH ;PWM赋初始值
OUT EQU P0 ;8个LED灯的接口
INCKEY EQU P1.4 ;K1,PWM值增加键。
DECKEY EQU P1.5 ;K2,PWM值减小键。
BEEP EQU P3.7
;----------------------------
ORG 0000H
SJMP START
ORG 000BH
SJMP INTT0
ORG 001BH
SJMP INTT1
ORG 0030H
;----------------------------
;主程序
;定时器0工作在模式1,定时器1工作在模式2。
;----------------------------
START:
MOV SP,#30H
MOV TMOD,#21H
MOV TH1,PWM ;脉宽调节
MOV TL1,#00H
MOV TH0,#0FCH ;1ms延时常数
MOV TL0,#066H ;频率调节
SETB EA
SETB ET0
SETB ET1
SETB TR0
LOOP: MOV A,PWM ;
JB INCKEY,LOOP1 ;增加键是否按下?
CALL DELAY ;延时去抖动
JB INCKEY,LOOP1
CJNE A,#0FFH,PWMINC ;是否到最大值?
CALL BEEP_BL ;是,蜂鸣器报警。
SJMP LOOP
PWMINC:
INC PWM ;调节脉宽(脉宽减小)
SJMP LOOP
LOOP1: JB DECKEY,LOOP2 ;减小键是否按下?
CALL DELAY ;延时去抖动
JB DECKEY,LOOP2
CJNE A,#02H,PWMDEC ;是否到最小值?
CALL BEEP_BL ;是,蜂鸣器报警。
SJMP LOOP
PWMDEC:
DEC PWM ;调节脉宽(脉宽增加)
LOOP2: SJMP LOOP
;------------------------------
;T0中断服务子程序 (频率)
;控制定时器1中断
;------------------------------
INTT0:
CLR TR1
MOV TH0,#0FCH ;1ms延时常数
MOV TL0,#066H ;频率调节
MOV TH1,PWM
SETB TR1
MOV OUT,#00H ;启动输出
RETI
;------------------------------
;T1中断服务子程序 (脉宽)
;控制PWM脉冲宽度
;------------------------------
INTT1:
CLR TR1 ;脉宽调节结束
MOV OUT,#0FFH ;结束输出
RETI
;------------------------------
;10ms延时子程序
;------------------------------
DELAY:
MOV R6,#50
DELAY1:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DELAY1
RET
;-----------------------------------------------
;蜂鸣器响一声子程序
;-----------------------------------------------
BEEP_BL:
MOV R6,#100
BL1: CALL BL2
CPL BEEP
DJNZ R6,BL1
MOV R5,#25
CALL DELAY2
RET
BL2: MOV R7,#180
BL3: NOP
DJNZ R7,BL3
RET
DELAY2: ;延时R5×10MS
MOV R6,#50
BL4: MOV R7,#100
BL5: DJNZ R7,BL5
DJNZ R6,BL4
DJNZ R5,DELAY2
RET
;---------------------------------------------------
END
下一篇:串行7段LED显示应用程序
史海拾趣
|
关于防盗门、防盗锁的现关也不用我多说了,我想大家都很清楚,头脑风暴一下你的观点吧,我们从非专业技术的角度去探讨一下怎么改进一下防盗门、防盗锁才能真正起到防盗的作用。[现在大多的防盗门、防盗锁只锁的了君子,锁不了小人]… 查看全部问答> |
|
焊了个LPC1343的底板,功能还在完善中,哈哈,先上图 先来个正面照。。只焊了蜂鸣器和串口,usb口预留了。。。哈哈 再来个反面 看看整体效果 看看测试效果 &n ...… 查看全部问答> |
|
建立VC2005的MFC智能设备工程,它自带了两个菜单项,新建和菜单。 请问怎么不让那个 新建出现啊? MSDN上关于CCommandBar的介绍也太简单了!而且如何添加自己的菜单项啊。 … 查看全部问答> |
|
项目一开始,选用的是STM32F103T8U6,焊在板子上后,用Flash loader demo与MCUISP一直读不到器件信息,更不用说下程序了。到最后,已经简化到板子上只焊一个CPU,35脚(BOOT0)脚直接接到3.3V,也不行! 实在没办法,直接从芯片上焊,QFN36脚 ...… 查看全部问答> |
|
我用 STM32 的例子,发现 HSE 启动之后怎么也不对。 这里: void Set_System(void) { /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/ /* RCC system reset(for debug ...… 查看全部问答> |
|
【低功耗】SiliconBlue宣布iCE65™ 超低功耗FPGA量产出货 SiliconBlue ® Technologies 日前宣布,其针对手持式超低功率应用的 65 奈米 SRAM 技术 FPGA 量产出货。 这个宣布包括iCE65L02、iCE65L04 以及 iCE65L08 元件,同系列的其 ...… 查看全部问答> |




