📄 main.lst
字号:
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 + -