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

📄 main.lst

📁 用PWM方波调节LED亮度
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  MAIN                                                                 10/19/2006 17:37:34 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN main.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE main.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;*******************************************************************************
                       2     ;程序名称:用PWM方波调节LED的亮度
                       3     ;硬件接法:P1.1控制LED,低电平点亮
                       4     ;          K3和K4分别接在P3.4、P3.5,按下时为低电平
                       5     ;运行效果:按K3可调暗LED,按K4可调亮LED
                       6     ;*******************************************************************************
                       7     
                       8     
                       9     ;*******************************************************************************
                      10     ;宏定义:BHS(Branch if High or Same)
                      11     ;功能:单字节无符号数比较,如果大于或等于则跳转
                      12     ;参数:
                      13     ;       x,y:要比较的两个数
                      14     ;       Label:跳转目标
                      15     ;*******************************************************************************
                      16     BHS     MACRO   x, y, Label
                      17             MOV     A, x
                      18             CLR     C
                      19             SUBB    A, y
                      20             JNC     Label
                      21             ENDM
                      22     
                      23     
                      24     ;*******************************************************************************
                      25     ;宏定义:BHI(Branch if High)
                      26     ;功能:单字节无符号数比较,如果大于则跳转
                      27     ;参数:
                      28     ;       x,y:要比较的两个数
                      29     ;       Label:跳转目标
                      30     ;*******************************************************************************
                      31     BHI     MACRO   x, y, Label
                      32             MOV     A, x
                      33             SETB    C
                      34             SUBB    A, y
                      35             JNC     Label
                      36             ENDM
                      37     
                      38     
                      39     ;*******************************************************************************
                      40     ;宏定义:BLO(Branch if Low)
                      41     ;功能:单字节无符号数比较,如果小于则跳转
                      42     ;参数:
                      43     ;       x,y:要比较的两个数
                      44     ;       Label:跳转目标
                      45     ;*******************************************************************************
                      46     BLO     MACRO   x, y, Label
                      47             MOV     A, x
                      48             CLR     C
                      49             SUBB    A, y
                      50             JC      Label
                      51             ENDM
                      52     
                      53     
                      54     ;*******************************************************************************
                      55     ;定义I/O接口
                      56     ;*******************************************************************************
  0091                57     PWM     BIT     P1.1    ;PWM输出(接LED)
  00B4                58     K3      BIT     P3.4    ;按键1,使PWM方波占空比增加(LED变暗)
A51 MACRO ASSEMBLER  MAIN                                                                 10/19/2006 17:37:34 PAGE     2

  00B5                59     K4      BIT     P3.5    ;按键2,使PWM方波占空比减少(LED变亮)
                      60     
                      61     
                      62     ;*******************************************************************************
                      63     ;定义PWM最大级数
                      64     ;*******************************************************************************
  0008                65     PWM_MAX EQU     8
                      66     
                      67     
                      68     ;*******************************************************************************
                      69     ;定义全局变量
                      70     ;*******************************************************************************
  0030                71     PwmValue        DATA    0x30    ;PWM级数,分为0~PWM_MAX-1级
  0031                72     T1INTSVC_t      DATA    0x31    ;T1中断服务函数用到的静态变量
                      73     
                      74     
                      75     ;*******************************************************************************
                      76     ;复位入口
                      77     ;*******************************************************************************
0000                  78             ORG     0x0000
0000 02001E           79             LJMP    PreMain
                      80     
                      81     
                      82     ;*******************************************************************************
                      83     ;定时器T1中断入口
                      84     ;*******************************************************************************
001B                  85             ORG     0x001B
001B 020033           86             LJMP    T1INTSVC
                      87     
                      88     
                      89     ;*******************************************************************************
                      90     ;进入主程序之前的初始化
                      91     ;*******************************************************************************
001E                  92     PreMain:
001E 758131           93             MOV     SP, #0x31
0021 753100           94             MOV     T1INTSVC_t, #0
0024 02008F           95             LJMP    main
                      96     
                      97     
                      98     ;*******************************************************************************
                      99     ;函数:unsigned char KeyScan()
                     100     ;功能:键盘扫描
                     101     ;返回:扫描到的键值
                     102     ;*******************************************************************************
                     103     ; 返回值 = ACC
0027                 104     KeyScan:
0027 E4              105             CLR     A
0028 20B402          106             JB      K3, KeyScan_00
002B 742B            107             MOV     A, #'+'
002D                 108     KeyScan_00:
002D 20B502          109             JB      K4, KeyScan_10
0030 742D            110             MOV     A, #'-'
0032                 111     KeyScan_10:
0032 22              112             RET
                     113     
                     114     
                     115     ;*******************************************************************************
                     116     ;函数:void T1INTSVC() interrupt 3
                     117     ;功能:定时器T1的中断服务函数
                     118     ;*******************************************************************************
0033                 119     T1INTSVC:
0033 C0E0            120             PUSH    ACC
0035 C0D0            121             PUSH    PSW
0037 C28E            122             CLR     TR1
0039 758DFF          123             MOV     TH1, #0xFF
003C 758B00          124             MOV     TL1, #0x00
A51 MACRO ASSEMBLER  MAIN                                                                 10/19/2006 17:37:34 PAGE     3

003F D28E            125             SETB    TR1
0041 0531            126             INC     T1INTSVC_t
                     127             BLO     T1INTSVC_t, #PWM_MAX, T1INTSVC_endif1
004A 753100          132             MOV     T1INTSVC_t, #0

⌨️ 快捷键说明

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