?? sx.asm
字號:
; 正常狀態時為低 一次輸出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 + -