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

📄 sx.asm

📁 一个用P89LPC935单片机发射信号的无线遥控器
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;       正常状态时为低   一次输出12比特间隔5MS输出四次
;       单比特输出为高低高低    0      短时间输出    1      长时间输出
;       悬空为0110              高电平为1010           低电平为0101
;       当前密码位状态为        悬空为01              高电平为11       低电平为00
;       合闸D3(A9)    分闸D2        闭锁D1           解锁D0
;       发送时A0在前A11在后
;       定时器时间为短时间输出时间
;       振荡频率 F=1000*16/Rosc(kΩ)kHz    其中Rosc为振荡电阻
;       Rosc=3.3MΩ,T=359US                 Rosc 采用了1.5M 的电阻振荡频率约为T=165US     315   210us
;       短时间=T=4/F                       长时间=3T

;       一组位码构成字码,字码由12个位码紧跟一个同步码构成。
;       A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 SYNC
;       SYNC  高T低31A

;PCONA   电源控制寄存器A
;0 CCUPD 比较/捕获单元(CCU)掉电:该位为1 时,CCU 的内部时钟被禁止。注:如果
;在掉电或完全掉电模式下,不管该位的状态如何,CCU 时钟将被禁能(注:
;使用CCUDIS 位时,该位无效。若CCUDIS=1,CCU 处于掉电)。
;1 SPD 串口(UART)掉电:该位为1 时,UART 的内部时钟被禁止。注:如果处
;于掉电或完全掉电模式下,不管该位的状态如何,UART 时钟都将会被禁止。
;2 SPPD SPI 掉电:该位为1 时,SPI 的内部时钟被禁止。注:如果处于掉电或完全
;掉电模式下,不管该位的状态如何,SPI 时钟都将会被禁止。
;3 I2PD I2C 掉电:该位为1 时,I2C 总线的内部时钟被禁止。注:如果处于掉电或完
;全掉电模式下,不管该位的状态如何,I2C 时钟都将会被禁止。
;4 ADPD A/D 转换器掉电:该位为1 时,关闭ADC 的时钟。如果要使ADC 完全掉电,
;用户还必须置位寄存器ADCON1 和ADCON0 中的位ENADC1 和ENADC0。
;5 VCPD 模拟电压比较器掉电:该位为1 时,电压比较器掉电。用户必须在置位该位
;之前禁止电压比较器。
;6 DEEPD 数据EEPROM 掉电:当该位为1 时,数据EEPROM 掉电。注:如果处于掉
;电或完全掉电模式下,不管该位的状态如何,数据EEPROM 都将会掉电。
;7 RTCPD 实时时钟掉电:该位为1 时,用于实时时钟的内部时钟被禁止。

;TMOD     定时器/计数器模式寄存器
;0 T0M0   定时器0 的工作模式选择器。这些位和TAMOD 寄存器的T0M2
;1 T0M1   位一起来决定定时器0 的工作模式。
;2 T0C/ T 定时器0 的定时或计数功能选择。该位清零时定时器0 用作定时功能(从
;         CCLK 输入脉冲);该位置位时定时器0 用作计数功能(从T0 脚输入脉冲)。
;3 T0GATE 定时器0 的门控位。该位被置位时,仅当INT0 脚为高电平且TR0 控制位
;         被置位时使能定时器/计数器;该位被清零时,TR0 控制位被置位时使能定时器0。
;4 T1M0   定时器1 的工作模式选择。这些位和TAMOD 寄存器的T1M2 位一起来决
;5 T1M1   定定时器1 的工作模式
;6 T1C/ T 定时器1 的定时或计数功能选择。该位清零时定时器1 用作定时功能(从
;         CCLK 输入脉冲);该位置位时定时器1 用作计数功能(从T1 脚输入脉冲)。
;7 T1GATE  定时器1 的门控位。该位被置位时,仅当INT1 脚为高电平且TR1 控制位
;          被置位时使能定时器/计数器;该位被清零时,TR1 控制位被置位时使能定时器1

;TAMOD
;0 T0M2   定时器0 的工作模式选择。这些位与TAMOD 寄存器的位T0M2 一起来决
;         定定时器0 的工作模式。
;4 T1M2   定时器1 的工作模式选择。这些位与TAMOD 寄存器的位T1M2 一起来决
;         定定时器1 的工作模式。
;         下列定时器模式由定时器模式位TnM[2:0]选择:
;000      8048 定时器“TLn”用作5 位预分频器(模式0)。
;001      16位定时器/计数器“THn”和“TLn”级联;无预分频器(模式1)。
;010      8 位自动重装定时器/计数器。溢出时THn 的内容装入TLn(模式2)。
;011      该模式下定时器0 用作2 个8 位的定时器/计数器。TL0 用作一个8
;         位的定时器/计数器,由标准定时器0 控制位来控制。TH0 只可用作
;         一个8 位的定时器,由定时器1 的控制位来控制(见文中描述)。该
;         模式下定时器1 关闭(模式3)。

;TCON     定时器0 和1 控制
;0 IT0(88H)中断0 类型控制位。由软件置位/清零以选择外部中断以下降沿/低电平方式触发。
;1 IE0    中断0 边沿标志。当检测到外部中断0 边沿时由硬件置位该标志。中断处理
;         时由硬件清零,或通过软件清零。
;2 IT1    中断1 类型控制位,由软件置位/清零以选择外部中断以下降沿/低电平方式触发。
;3 IE1    中断1 边沿标志。当检测到外部中断1 边沿时由硬件置位该标志。中断处理
;         时由硬件清零,或通过软件清零。
;4 TR0    定时器0 运行控制位。通过软件将其置位/清零来起动/关闭定时器/计数器0。
;5 TF0    定时器0 溢出标志。定时器/计数器溢出时由硬件置位。中断执行时硬件清零,
;         或由软件清零(硬件清零时,模式6 不同)。
;6 TR1    定时器1 运行控制位。通过软件将其置位/清零来起动/关闭定时器/计数器1。
;7 TF1    定时器1 溢出标志。定时器/计数器溢出时由硬件置位。中断执行时硬件清零,
;         或由软件清零(硬件清零时,模式6 不同,见以上有关模式6 的描述)。

;RTCCON   实时时钟控制寄存器
;0 RTCEN  实时时钟使能。如果该位为1,实时时钟使能。注:该位不会使实时时钟进入掉
;         电状态。不管RTCEN 的状态如何,RTCPD (PCONA.7)为1 时会使实时时钟进入
;         掉电,并且禁止该模块。
;1 ERTC   实时时钟中断使能。实时时钟和看门狗定时器共用一个中断向量。注:如果用户
;         配置位WDTE(UCFG1.7)为0,看门狗定时器可使能为产生中断。用户可读取
;         RTCF(RTCCON.7)位以确定中断是否由实时时钟产生。
;5 RTCS0
;6 RTCS1
;         实时时钟源选择(见表40)
;7 RTCF   实时时钟标志。当23 位实时时钟到达计数值0 时,该位置位。该位可通过软件清零。

;FMCON       表110 Flash 存储器控制寄存器
;0 OI       R 操作被中断。由于中断或复位而使擦除-编程终止时该位置位。
;  FMCMD.0  W 命令字节位0。
;1 SV       R 安全出错。试图对加密扇区或页进行编程、擦除或CRC 校验时该位置位。
;  FMCMD.1  W 命令字节位1。
;2 HVE      R 高电压错误。高电压发生器出错时该位置位。
;  FMCMD.2  W 命令字节位2。
;  HVA      R 高电压终止。当在编程或擦除周期内检测到中断或掉电时以及在编程或擦
;           除周期开始时掉电检测被禁止置位该位。
;3 FMCMD.3  W 命令字节位3。
;4:7 - R 保留。
;4:7 FMCMD.4 W 命令字节位4。
;4:7 FMCMD.5 W 命令字节位5。
;4:7 FMCMD.6 W 命令字节位6。
;4:7 FMCMD.7 W 命令字节位7。

; 中断汇总
;描述         中断标志位     中断向量地址          中断使能位       中断优先级仲裁顺序         掉电唤醒
;外部中断0      IE0            0003H               EX0(IEN0.0)      IP0H.0,IP0.0 1(最高)         √
;定时器0中断    TF0            000BH               ET0(IEN0.1)      IP0H.1,IP0.1 4
;外部中断1      IE1            0013H               EX1(IEN0.2)      IP0H.2,IP0.2 7 √
;定时器1中断    TF1            001BH               ET1(IEN0.3)      IP0H.3,IP0.3 10
;串口Tx和Rx     TI&RI
;串口Rx RI                     0023H               ES/ESR(IEN0.4)   IP0H.4,IP0.4 13
;掉电检测       BOF            002BH               EBO(IEN0.5)      IP0H.5,IP0.5 2 √
;看门狗定时器/
;实时时钟       WDOVF/RTCF     0053H               EWDRT(IEN0.6)    IP0H.6,IP0.6 3 √
;I2C 总线中断   SI             0033H               EI2C(IEN1.0)     IP0H.0,IP0.0 5
;KBI 中断       KBIF           003BH               EKBI(IEN1.1)     IP0H.0,IP0.0 8 √
;比较器1/2中断  CMF1/CMF2      0043H               EC(IEN1.2)       IP0H.0,IP0.0 11 √
;SPI中断        SPIF           004BH               ESPI(IEN1.3)     IP1H.3, IP1.3 14
;捕获/比较单元                 005BH               ECCU(IEN1.4)     IP1H.4, IP1.46
;串口Tx TI                     006BH               EST(IEN1.6)      IP0H.0,IP0.0 12


;         PxM1.Y         PxM2.Y          口输出模式
;          0               0             准双向口
;          0               1             推挽
;          1               0             仅为输入(高阻)
;          1               1             开漏
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AUXR1    EQU      0A2H              ;辅助功能寄存器         00H
DIVM     EQU      095H              ;CPU时钟分频控制        00H
IEN0     EQU      0A8H              ;中断使能0              00H
IEN1     EQU      0E8H              ;中断使能1              00H
IP0      EQU      0B8H              ;中断优先级0            00H
IP0H     EQU      0B7H              ;中断优先级0高字节      00H
IP1      EQU      0F8H              ;中断优先级1            00H
IP1H     EQU      0F7H              ;中断优先级1 高字节     00H
P0M1     EQU      084H              ;0口输出模式选择1       FFH
P0M2     EQU      085H              ;0口输出模式选择2       00H
P1M1     EQU      091H              ;1口输出模式选择1       FFH
P1M2     EQU      092H              ;1口输出模式选择2       00H
P2M1     EQU      0A4H              ;2口输出模式选择1       FFH
P2M2     EQU      0A5H              ;2口输出模式选择2       00H
P3M1     EQU      0B1H              ;3口输出模式选择1       03H
P3M2     EQU      0B2H              ;3口输出模式选择2       00H
;PCON     EQU      087H              ;电源控制寄存器         00H
PCONA    EQU      0B5H              ;电源控制寄存器A        00H
RSTSRC   EQU      0DFH              ;复位源寄存器           30H
TAMOD    EQU      08FH              ;定时器0和1附加模式
TRIM     EQU      096H              ;内部振荡调整寄存器
WDCON    EQU      0A7H              ;看门狗控制寄存器
WDL      EQU      0C1H              ;看门狗装载 FFH
WFEED1   EQU      0C2H              ;看门狗清零
WFEED2   EQU      0C3H              ;看门狗清零
PT0AD    EQU      0F6H              ;P0口数字输入禁能

FMCON    EQU      0E4H              ;Flash 存储器控制寄存器
FMDATA   EQU      0E5H              ;编程Flash 数据
FMADRL   EQU      0E6H              ;编程Flash 地址低字节
FMADRH   EQU      0E7H              ;编程Flash 地址高字节



RTCCON   EQU      0D1H              ;实时时钟控制寄存器


;PCON     EQU      087H              ;电源控制
;SCON     EQU      098H              ;串口(UART)控制
;SBUF     EQU      099H              ;串口(UART)数据缓冲器
SADDR    EQU      0A9H              ;串口(UART)地址
SADEN    EQU      0B9H              ;串口(UART)地址使能
SSTAT    EQU      0BAH              ;串口(UART)状态
BRGR1    EQU      0BFH              ;波特率发生器速率高字节
BRGR0    EQU      0BEH              ;波特率发生器速率低字节
BRGCON   EQU      0BDH              ;波特率发生器控制
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY_BH_YS    EQU      6             ;按键去抖动时间
KEY_DK_YS    EQU      6             ;按键释放去抖动时间

FXCS         EQU      10            ;无线信号发送次数

SUANG_J_SJ   EQU      2             ;长按键有效时间。最大为3        3S
XS_ZKB       EQU      07H           ;调整显示的亮度。要求满足XS_ZKB=2^N-1 (N=2,3,4,5.....)
;;;;;;;;;;
YK           BIT         P0.0
LED2         BIT         P3.1
LED1         BIT         P3.0
LED3         BIT         P1.6
LED4         BIT         P1.7
DANYUAN      BIT         P0.2
;;;;;;;;;;;
YS_FX        BIT         00H
ERROR        BIT         08H        ;

YJ           BIT         10H
DZ_P         BIT         18H
XH_P         BIT         20H
KEY_YCL      BIT         28H      ;按键是否以处理
SX_W1        BIT         30H
SX_W2        BIT         31H
SX_W3        BIT         32H



AJ_YS        EQU         28H
AJ_YS_BIT    BIT         45H
;;;;;;;;;;;
YS_1         EQU         30H
YS_2         EQU         31H
SJ_DZ        EQU         32H
SX_W_X1      EQU         33H
SX_W_X       EQU         34H
SX_W         EQU         35H           ;当前要显示的位
LCD_WZ       EQU         36H           ;要闪烁的位
MI1          EQU         37H           ;要显示的数据
MI2          EQU         38H
MI3          EQU         39H
MI4          EQU         3AH



MIMA11       EQU         3BH
MIMA12       EQU         3CH
MIMA13       EQU         3DH
MIMA14       EQU         3EH
MIMA15       EQU         3FH

MIMA_DPL     EQU         40H         ;序号
MIMA_DPH     EQU         41H

DQ_SJ_L      EQU         42H         ;地址
DQ_SJ_H      EQU         43H

K_SJ_L       EQU         44H         ;数据的地址
K_SJ_H       EQU         45H

ST1          EQU         46H      ;按键有效时间
KEY_SC       EQU         47H      ;上次键值
ST2          EQU         48H      ;按键无效时间
HSECOND      EQU         4AH      ;关机记时
SECOND       EQU         4BH



MIMA1        EQU         0C0H               ;--F8H





              ORG        0000H
              LJMP       MAIN
              ORG        000BH
              LJMP       TRIMER0
              ORG        001BH
              LJMP       TRIMER1

              ORG        0100H
MAIN:
              NOP
              CLR       EA
              MOV       R7,#0
              DJNZ      R7,$
              MOV       AUXR1,#080H
	      MOV       DIVM,#6              ;3.25512   T=2*(2N/F)
	      MOV       PCONA,#7FH
              MOV       R7,#0
              DJNZ      R7,$


              MOV       P0M1,#00100000B
	      MOV       P0M2,#00000001B
	      MOV       P1M1,#0
	      MOV       P1M2,#0
              MOV       P2M1,#00H
              MOV       P2M2,#0FFH            ;推挽
              MOV       P3M1,#00H
              MOV       P3M2,#00H

              CLR       DANYUAN
              NOP
              CLR       DANYUAN
              CLR       P3.0                 ;关LED
              CLR       P3.1
              CLR       P1.6
              CLR       P1.7
              MOV       P2,#0
              CLR       YK

              MOV       R7,#0                ;开机时间2S
              MOV       R5,#2
MAIN9:        MOV       R6,#241
MAIN8:        DJNZ      R7,$
              DJNZ      R6,MAIN8
              DJNZ      R5,MAIN9

              SETB      DANYUAN
              NOP
              SETB      DANYUAN


              MOV       SP,#83H
              MOV       PSW,#0
              CLR       A
              MOV       R0,#83H
WDY:          MOV       @R0,A
              DJNZ      R0,WDY
              

              MOV       IP0H,#12H
              MOV       IP0,#02H
              MOV       TMOD,#022H             ;定时器0模式2,自动重装
              MOV       TAMOD,#000H            ;定时器1模式1,16位定时器
;              MOV       TH0,#0BFH             ;210
              MOV       TH0,#0C3H              ;200
              MOV       TH1,#066H

              SETB      TR1
              SETB      ET1
              SETB      TR0
              CLR       ET0
              CLR       YS_FX
              CLR       YK


              MOV       MI1,#00H           ;LCD_WZ=0
              MOV       MI2,#00H           ;LCD_WZ=1
              MOV       MI3,#00H           ;LCD_WZ=2
              MOV       MI4,#00H           ;LCD_WZ=3
              MOV       LCD_WZ,#4
              MOV       SECOND,#0
              MOV       HSECOND,#0
              CLR       ERROR


              SETB      SX_W1
              SETB      SX_W2
              SETB      SX_W3
              CLR       DZ_P
              CLR       XH_P
              SETB      YJ

MAIN1:        SETB      EA
              MOV       C,ET1
              RLC       A
              MOV       B,A
              MOV       C,ET0
              RLC       A
              XRL       A,B
              JB        ACC.0,MAIN2
              CLR       ET0
              SETB      ET1
              CLR       TF1
MAIN2:        JB        ET0,MAIN1
              MOV       PSW,#0

              JNB       AJ_YS_BIT,$
              NOP
              MOV       AJ_YS,#0

              LCALL     KEY_ZHSM
              LJMP      MAIN1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TRIMER0:      PUSH       A
              PUSH       PSW
              MOV        PSW,#10H
              JNB        YS_FX,TRIMER0_1

              DJNZ       SJ_DZ,TRIMER0_END

⌨️ 快捷键说明

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