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

📄 cp发送.lst

📁 用单片机控制步进马达
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -