📄 cp发送.lst
字号:
A51 MACRO ASSEMBLER CP发送 05/14/2007 12:44:11 PAGE 1
MACRO ASSEMBLER A51 V1.10
OBJECT MODULE PLACED IN CP发送.OBJ
ASSEMBLER INVOKED BY: C:\MANLEY\PMEDWIN\A51.EXE CP发送.ASM DB
LOC OBJ LINE SOURCE
1
2 ; 用PCA 功能扩展外部中断的示例程序
3
4 ;如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序
5 ;本演示程序在STC-ISP Ver 3.0A.PCB的下载编程工具上测试通过
6 ;------------------------------------------------------------------------------
7 ;P3.7(PCA 模块0) 扩展为下降沿外部中断,
8 ;P3.5(PCA 模块1) 扩展为上升沿/下降沿都可触发的外部中断。
9 ;1) 汇编源程序, 把汇编程序产生的的程序代码下载到单片机中, 上电运行本程序。
10 ;2) 将 P3.7/PCA0 短路到地, 这一动作产生一个下降沿,此时本演示程序对 P1.6 取反,
11 ; P1.6 控制的 LED 灯将会变化一次。
12 ;3) 改变 P3.5/PCA1 的外部高低状态(由高到低--产生下降沿; 由低到高--产生上升沿),
13 ; 本演示程序在 P3.5/PCA1 的下降沿/上升沿都产生中断,此时本演示程序对 P1.5 取反,
14 ; P1.5 控制的 LED 灯状态将会发生变化。
15 ; 所谓 LED 灯状态发生变化是指 LED 由灭变亮或由亮变灭。
16 ;------------------------------------------------------------------------------
17 ;声明 STC12C2052AD和STC12C5410AD系列 MCU 特殊功能寄存器地址
00B7 18 IPH EQU 0B7H ;中断优先级高位寄存器
00AE 19 EPCALVD EQU IE.6 ;PCA 中断和 LVD(低压检测)中断共享的总中断控制位
00F9 20 CH EQU 0F9H ;PCA 计数器高8位。
00E9 21 CL EQU 0E9H ;PCA 计数器低8位。
22 ;-----------------------
00D8 23 CCON EQU 0D8H ;PCA 控制寄存器。
00D8 24 CCF0 EQU CCON.0 ;PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。
00D9 25 CCF1 EQU CCON.1 ;PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。
00DA 26 CCF2 EQU CCON.2 ;PCA 模块2 中断标志, 由硬件置位, 必须由软件清0。
00DB 27 CCF3 EQU CCON.3 ;PCA 模块3 中断标志, 由硬件置位, 必须由软件清0。
00DC 28 CCF4 EQU CCON.4 ;PCA 模块4 中断标志, 由硬件置位, 必须由软件清0。
00DD 29 CCF5 EQU CCON.5 ;PCA 模块5 中断标志, 由硬件置位, 必须由软件清0。
00DE 30 CR EQU CCON.6 ;1:允许 PCA 计数器计数, 必须由软件清0。
00DF 31 CF EQU CCON.7 ;PCA计数器溢出(CH,CL由 FFFFH 变为 0000H)标志,
32 ;PCA计数器溢出后由硬件置位,必须由软件清0。
00D9 33 CMOD EQU 0D9H ;PCA 工作模式寄存器。
34 ;CMOD.7 CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。
35 ;CMOD.2 CPS1: PCA 计数器计数脉冲源选择位 1。
36 ;CMOD.1 CPS0: PCA 计数器计数脉冲源选择位 0。
37 ; CPS1 CPS0
38 ; 0 0 外部晶体频率/12。
39 ; 0 1 外部晶体频率/2。
40 ; 1 0 Timer 0 溢出脉冲,
41 ; Timer 0 还可通过 AUXR寄存器设置成工作在 12T 或 1T 模式。
42 ; 1 1 从 ECI/P3.4 脚输入的外部时钟。
43 ;CMOD.0 ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。
44 ;------------------------
00FA 45 CCAP0H EQU 0FAH ;PCA 模块0的捕捉/比较寄存器高 8 位。
00FB 46 CCAP1H EQU 0FBH ;PCA 模块1的捕捉/比较寄存器高 8 位。
00FC 47 CCAP2H EQU 0FCH ;PCA 模块2的捕捉/比较寄存器高 8 位。
00FD 48 CCAP3H EQU 0FDH ;PCA 模块3的捕捉/比较寄存器高 8 位。
00FE 49 CCAP4H EQU 0FEH ;PCA 模块4的捕捉/比较寄存器高 8 位。
00FF 50 CCAP5H EQU 0FFH ;PCA 模块5的捕捉/比较寄存器高 8 位。
00EA 51 CCAP0L EQU 0EAH ;PCA 模块0的捕捉/比较寄存器低 8 位。
00EB 52 CCAP1L EQU 0EBH ;PCA 模块1的捕捉/比较寄存器低 8 位。
00EC 53 CCAP2L EQU 0ECH ;PCA 模块2的捕捉/比较寄存器低 8 位。
00ED 54 CCAP3L EQU 0EDH ;PCA 模块3的捕捉/比较寄存器低 8 位。
00EE 55 CCAP4L EQU 0EEH ;PCA 模块4的捕捉/比较寄存器低 8 位。
00EF 56 CCAP5L EQU 0EFH ;PCA 模块5的捕捉/比较寄存器低 8 位。
57 ;------------------------
00F2 58 PCAPWM0 EQU 0F2H ;PCA 模块0 PWM 寄存器。
A51 MACRO ASSEMBLER CP发送 05/14/2007 12:44:11 PAGE 2
00F3 59 PCAPWM1 EQU 0F3H ;PCA 模块1 PWM 寄存器。
00F4 60 PCAPWM2 EQU 0F4H ;PCA 模块2 PWM 寄存器。
00F5 61 PCAPWM3 EQU 0F5H ;PCA 模块3 PWM 寄存器。
00F6 62 PCAPWM4 EQU 0F6H ;PCA 模块4 PWM 寄存器。
00F7 63 PCAPWM5 EQU 0F7H ;PCA 模块5 PWM 寄存器。
64 ;PCA-PWMn: 7 6 5 4 3 2 1 0
65 ; - - - - - - EPCnH EPCnL
66 ;B7-B2: 保留
67 ;B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。
68 ;B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。
69 ;------------------------
00DA 70 CCAPM0 EQU 0DAH ;PCA 模块0的工作模式寄存器。
00DB 71 CCAPM1 EQU 0DBH ;PCA 模块1的工作模式寄存器。
00DC 72 CCAPM2 EQU 0DCH ;PCA 模块2的工作模式寄存器。
00DD 73 CCAPM3 EQU 0DDH ;PCA 模块3的工作模式寄存器。
00DE 74 CCAPM4 EQU 0DEH ;PCA 模块4的工作模式寄存器。
00DF 75 CCAPM5 EQU 0DFH ;PCA 模块5的工作模式寄存器。
76 ;CCAPMn: 7 6 5 4 3 2 1 0
77 ; - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn
78 ;
79 ;ECOMn = 1:允许比较功能。
80 ;CAPPn = 1:允许上升沿触发捕捉功能。
81 ;CAPNn = 1:允许下降沿触发捕捉功能。
82 ;MATn = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。
83 ;TOGn = 1:当匹配情况发生时, CEXn 将翻转。
84 ;PWMn = 1:将 CEXn 设置为 PWM 输出。
85 ;ECCFn = 1:允许 CCON 中的 CCFn 触发中断。
86 ;ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn
87 ; 0 0 0 0 0 0 0 00H 未启用任何功能。
88 ; x 1 0 0 0 0 x 21H 16位CEXn上升沿触发捕捉功能。
89 ; x 0 1 0 0 0 x 11H 16位CEXn下降沿触发捕捉功能。
90 ; x 1 1 0 0 0 x 31H 16位CEXn边沿(上、下沿)触发捕捉功能。
91 ; 1 0 0 1 0 0 x 49H 16位软件定时器。
92 ; 1 0 0 1 1 0 x 4DH 16位高速脉冲输出。
93 ; 1 0 0 0 0 1 0 42H 8位 PWM。
94 ;------------------------------------------------------------------------------
95 ;定义单片机管脚
0097 96 LEDMCUSTART EQU P1.7
0096 97 LEDPCAINT0 EQU P1.6
0095 98 LEDPCAINT1 EQU P1.5
99
100 ;CCAPnLValue EQU 25H ;25H = 37, fosc = 18.432MHz时, 高速脉冲输出 = 124.540KHz
101 ;CCAPnLValue EQU 28H ;28H = 40, fosc = 20MHz时, 高速脉冲输出 = 125KHz
0042 102 CCAPnLValue EQU 42H ;42H = 66, fosc = 33MHz时, 高速脉冲输出 = 125KHz
0044 103 DCONT EQU 44H
0070 104 WANGBIT BIT 2EH.0
004A 105 Counter EQU 4AH
106
107 ;------------------------------------------------------------------------------
108 ;定义常量
109 ;Channe1-5mS-H, Channe1-5mS-L 的计算方法见 PCA 中断服务程序内的注释
110 ;-----------------------------------
111 ;用定时器0 的溢出率作 PCA 计数器(CH,CL)的时钟源时
112 ;Channe1-5mS-H EQU 03H ;PCA 模块1 5mS 定时常数高位, Fosc = 18.432
0001 113 Channe15mSH EQU 01H ;PCA 模块1 5mS 定时常数高位, Fosc = 18.432
0000 114 Channe15mSL EQU 00H ;PCA 模块1 5mS 定时常数低位, Fosc = 18.432
115 ;Channe1-5mS-H EQU 03H ;PCA 模块1 5mS 定时常数高位, Fosc = 22.1184
116 ;Channe1-5mS-L EQU 099H ;PCA 模块1 5mS 定时常数低位, Fosc = 22.1184
117 ;------------------
118 ;内部时钟频率(fosc)/12 作 PCA 计数器(CH,CL)的时钟源
119 ;Channe1-5mS-H EQU 1EH ;PCA 模块1 5mS 定时常数高位
120 ;Channe1-5mS-L EQU 00H ;PCA 模块1 5mS 定时常数低位
121 ;------------------------------------------------------------------------------
0000 122 ORG 0000H
0000 020050 123 LJMP MAIN
124 ;------------------------------------------------------------------------------
A51 MACRO ASSEMBLER CP发送 05/14/2007 12:44:11 PAGE 3
0033 125 ORG 0033H ;interrupt 6(0,1,2,3,4,5,6)
0033 020079 126 LJMP PCAInterrupt
127 ;------------------------------------------------------------------------------
0050 128 ORG 0050H
0050 75817F 129 MAIN: MOV SP, #7FH
0053 C297 130 CLR LEDMCUSTART ;点亮 LED-MCU-START LED, 表示程序正在运行
0055 12005A 131 LCALL PCAInitiate ;初始化 PCA
0058 132 WAIT:
0058 80FE 133 SJMP WAIT ;跳转到本行,无限循环。
134 ;------------------------------------------------------------------------------
005A 135 PCAInitiate:
136
137
138
005A 75D980 139 MOV CMOD, #10000000B ;PCA 在空闲模式下停止 PCA 计数器工作
140 ;PCA 时钟源为fosc/12
141 ;禁止 PCA 计数器溢出(CH,CL由 FFFFH 变为 0000H 时)中断
005D 75D800 142 MOV CCON, #00H ;CF = 0,清0 PCA 计数器溢出中断请求标志位
143 ;CR = 0, 不允许 PCA 计数器计数
144 ;清0 PCA 各模块中断请求标志位,如 CCF1,CCF0
0060 75E900 145 MOV CL, #00H ;清0 PCA 计数器
0063 75F900 146 MOV CH, #00H
147 ;-------------------------
148 ;设置模块0
0066 75DA11 149 MOV CCAPM0, #11H ;设置PCA模块0下降沿触发捕捉功能。
150 ; MOV CCAPM0, #21H ;如果送的是#21h,则PCA模块0为上升沿触发。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -