⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xlledkz.asm

📁 这是一个八路跑马灯的实验在单片机做跑马灯时经常用到 希望能对大家有帮助
💻 ASM
字号:
;/*******************************************************************************
;*  标题:  xl系列单片机实验仪演示程序PWM 控制 LED 灯渐亮渐灭程序                *
;*  文件:   xlledkz.asm                                                         *
;*  日期:  2006-1-5                                                             *
;*  版本:  3.0 (试验通过版)可用xl600-xl1000单片机综合试验仪试验               *
;*  邮箱:  sxj1974@163.com                                                      *
;*  网站: http://www.51c51.com    www.8951.com                                 *
;********************************************************************************
; PWM 控制 LED 灯渐亮渐灭程序                                                   *
; 利用定时器控制产生占空比可变的 PWM 波                                         *
; 按K1,PWM值增加,则占空比减小,LED 灯渐暗。                                    *
; 按K2,PWM值减小,则占空比增加,LED 灯渐亮。                                    *
;当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警                              *
;资源:p0口,8路指示灯。p1.4,p1.5亮度控制按键(端口按键)p3.7小喇叭报警          *
;********************************************************************************
;* 【版权】 Copyright(C)深圳市学林电子有限公司 www.51c51.com                    *
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
;*  【技术支持】请访问http://www.51c51.com/bbs/index.asp  官方论坛              *
;********************************************************************************/
;----------------------------
         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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -