?? main.asm
字號:
INCLUDE "SUBDEF.ASM"
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP NULINIT
;
ORG 000BH ; 定時(shí) 器T0 中斷
AJMP TIMINIT
;
ORG 0013H
AJMP NULINIT
ORG 001BH ; 定時(shí)器T1 中斷
AJMP NULINIT
ORG 0023H ; 串行口 中斷
AJMP COMINIT
ORG 0100H
MAIN: MOV SP,#068H
MOV P0,#00H
MOV P1,#0FFH
MOV P2,#00H
SETB P3.5
SETB P3.2
SETB P3.3
;
MOV SCON,#0D8H ; 串行口 工作方式3
MOV PCON,#080H ; SMOD=1
MOV TMOD,#21H ; 定時(shí)器T0 工作方式1 定時(shí)器T1工作方式2
;
MOV TL0,#018H ; 定時(shí)器1ms 中斷
MOV TH0,#0FCH
;
MOV TH1,#0FEH ;
MOV TL1,#0FEH
;
MOV IE,#012H ; 定時(shí)器T0 串行口 開中斷
;
MOV PSW,#00H ; 使用0組寄存器
;
SETB P3.0
MOV A,SBUF
;
SETB EA
SETB TR0 ; 啟動定時(shí)器T0
SETB TR1 ; 啟動定時(shí)器T1
CLR TXDCTR ; 485接收允許
;
;
LCALL INIT_PRO
;
LCALL CLR_VIS ; 清顯示
CLR biFRMFS ; 清閃爍
MOV yMSECH,#00H
MOV yMSECL,#00H
;
MOV 50H,#05H
MOV 51H,#00H
MOV 52H,#000H
MOV 53H,#24H
MOV 54H,#080H
MOV 55H,#081H
CLR C
MOV A,yCOMADR
RRC A
INC A
MOV B,#10
DIV AB
MOV 56H,A
MOV 57H,B
LCALL VIS_BUF ; 顯示50H~5AH字符
CLR LEDCLK
LCALL VIS_PLAY
;
;
PROSTR: CLR C
;
LCALL VIS_PLAY
;
JNB biCOMPRO,PROSTR1
LCALL COM_PRO
;
PROSTR1:
LJMP PROSTR
;
;
;
;
;
;*************************************************
; 冗余中斷
;*************************************************
NULINIT: RETI
;
;
;
;*************************************************
; TIMINIT 定時(shí)器T0 1ms中斷
; 使用3組寄存器
;*************************************************
TIMINIT: PUSH ACC
PUSH PSW
PUSH DPL
PUSH DPH
;
MOV TL0,#018H ; 定時(shí)器1ms 中斷
MOV TH0,#0FCH
CLR C
;
; 1MS計(jì)時(shí)器+1
INC yMSECL
MOV A,yMSECL
JNZ TIMEND
INC yMSECH
TIMINIT0:
;
TIMINIT1: JNB biFRMFS,TIMEND
MOV A,yMSECH
JNB ACC.1,TIMINIT2
JB biFRMBK,TIMEND
SETB biFRMBK
SJMP TIMEND
TIMINIT2: JNB biFRMBK,TIMEND
CLR biFRMBK
;
CLR C
MOV A,yFLSHDEL
JZ TIMINIT3
DEC A
MOV yFLSHDEL,A
SJMP TIMEND
;
TIMINIT3: CLR biFRMFS
;
;
;
;
TIMEND: POP DPH
POP DPL
POP PSW
POP ACC
RETI
;
;
;
;
;
;
;****************************************************************
; INIT_PRO 初始化
;****************************************************************
INIT_PRO: CLR C
;
CLR biFRMFS ; 閃爍標(biāo)志
CLR biFRMBK ; 亮滅標(biāo)志
;
CLR biEPROM ; 讀寫E2PROM的A8地址位
CLR biRXDFLG ; 485接收狀態(tài) =1 接收到幀頭狀態(tài) =0 空
CLR biCOMPRO ; 485接收等待處理狀態(tài) =1 接收等待處理停止接收 =0 可以接收
CLR biTXDFLG ; 485數(shù)據(jù)幀發(fā)送狀態(tài) =1 數(shù)據(jù)幀發(fā)送狀態(tài) =0 空
CLR biINFFLG ; 485發(fā)送狀態(tài) =1 有信息需發(fā)送 =0 無
CLR biWR2864 ; 寫2864狀態(tài) =1 寫2864等待狀態(tài) =0 空
CLR biF8FLG ; 下傳幀標(biāo)志
CLR biVISFLG ; 顯示狀態(tài)改變
CLR biSTOP
CLR biRXDDA ; 接收數(shù)據(jù)標(biāo)志
CLR biDYNA
MOV yDYNA,#00H
;
;
MOV yCOMADR,#01 ; 485通訊 本機(jī)地址
;
MOV yWR2864,#00H ; 寫2864的延時(shí)計(jì)數(shù)器
;
MOV yMSECH,#00H
MOV yMSECL,#00H
;
;
MOV yVALH,#00H ; 顯示分值高2位(BCD碼)
MOV yVALL,#00H ; 顯示分值高2位(BCD碼)
;
MOV yVISFLG,#00H ; 顯示狀態(tài)
;
MOV yWRTBGH,#02H ; 寫2864起始高字
MOV yWRTBGL,#00H ; 寫2864起始低字
;
CLR C
MOV DPTR,#D_KEYRD
MOVX A,@DPTR
ANL A,#0FH
JNZ INIT_ADR1
MOV A,#49
INIT_ADR1:DEC A
RL A
INC A
MOV yCOMADR,A
;
RET
;
;
;
;
;
;****************************************************************
; INTDELAY ; 上電延時(shí)
;****************************************************************
INTDELAY:MOV R7,#00H
INTDELA0:MOV R6,#00H
INTDELA1:NOP
DJNZ R6,INTDELA1
DJNZ R7,INTDELA0
RET
;
;****************************************************************
; WRROM_DLY ; 寫2864延時(shí)
;****************************************************************
WRROM_DLY: MOV R7,#010H
WRROM_DLY0:MOV R6,#00H
WRROM_DLY1:NOP
DJNZ R6,WRROM_DLY1
DJNZ R7,WRROM_DLY0
RET
;
INCLUDE "COMOK.ASM"
INCLUDE "TAB.ASM"
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -