📄 lptprinterinterfaceto8951.asm
字号:
cpu "8051.tbl"
hof "int8"
;IEC: EQU A8H
PSW: equ 0D0h ;program status word.
IE: EQU 0A8H ;INTERRUPT ENABLE.
SBUF: EQU 99H ;SEND BUFFER.
SCON: EQU 98H ;SERIAL CONTROL.
TH1: EQU 8DH ;TIMER 1 HIGH.
TH0: EQU 8CH ;TIMER 0 HIGH.
TL1: EQU 8BH ;TIMER 1 LOW.
TL0: EQU 8AH ;TIMER 0 LOW.
TMOD: EQU 89H ;TIMER MODE.
TCON: EQU 88H ;TIMER CONTROL.
PCON: EQU 87H ;POWER CONTROL REGISTER.
DPH: EQU 83H ;DATA POINTER HIGH.
DPL: EQU 82H ;DATA POINTER LOW.
SP: EQU 81H ;STACK POINTER.
P0: EQU 80H ;PORT 0.
P1: EQU 90H ;PORT 1.
P2: EQU 0A0H ;PORT 2.
P3: EQU 0B0H ;port 3.
p4: EQU 0E8H ;port 4
p6: equ 0F8h ;port6.
Acc: equ 0E0h ;Acc.
;
;MCS-51 INTERNAL BIT ADDRESSES
;
CY: EQU 0D7H ;CARRY FLAG
AC: EQU 0D6H ;AUXILIARY-CARRY FLAG
F0: EQU 0D5H ;USER FLAG 0
RS1: EQU 0D4H ;REGISTER SELECT MSB
RS0: EQU 0D3H ;REGISTER SELECT LSB
OV: EQU 0D2H ;OVERFLOW FLAG
P: EQU 0D0H ;PARITY FLAG
PS: EQU 0BCH ;PRIORITY SERIAL PORT
PT1: EQU 0BBH ;PRIORITY TIMER 1
PX1: EQU 0BAH ;PRIORITY EXTERNAL 1
PT0: EQU 0B9H ;PRIORITY TIMER 0
PX0: EQU 0B8H ;PRIORITY EXTERNAL 0
EA: EQU 0AFH ;ENABLE ALL INTERRUPT
ES: EQU 0ACH ;ENABLE SERIAL INTERRUPT
ET1: EQU 0ABH ;ENABLE TIMER 1 INTERRUPT
EX1: EQU 0AAH ;ENABLE EXTERNAL 1 INTERR
ET0: EQU 0A9H ;ENABLE TIMER 0 INTERRUPT
EX0: EQU 0A8H ;ENABLE EXTERNAL 0 INTERR
SM0: EQU 09FH ;SERIAL MODE 0
SM1: EQU 09EH ;SERIAL MODE 1
SM2: EQU 09DH ;SERIAL MODE 2
REN: EQU 09CH ;SERIAL RECEPTION ENABLE
TB8: EQU 09BH ;TRANSMITT BIT 8
RB8: EQU 09AH ;RECEIVE BIT 8
TI: EQU 099H ;TRANSMIT INTERRUPT FLAG
RI: EQU 098H ;RECEIVE INTERRUPT FLAG
TF1: EQU 08FH ;TIMER 1 OVERFLOW FLAG
TR1: EQU 08EH ;TIMER 1 RUN CONTROL BIT
TF0: EQU 08DH ;TIMER 0 OVERFLOW FLAG
TR0: EQU 08CH ;TIMER 0 RUN CONTROL BIT
IE1: EQU 08BH ;EXT INTERR. 1 EDGE FLAG
IT1: EQU 08AH ;EXT INTERR. 1 TYPE FLAG
IE0: EQU 089H ;EXT INTERR. 0 EDGE FLAG
IT0: EQU 088H ;EXT INTERR. 0 TYPE FLAG
BDE: EQU 0dfH
org 0030h
SLETTER: DFS 1
DATE1: dfs 1 ;1
DATE2: dfs 1 ;2
DOT1: dfs 1 ;3
DATE3: dfs 1 ;4
DATE4: dfs 1 ;5
DOT2: dfs 1 ;6
DATE5: dfs 1 ;7
DATE6: dfs 1 ;8
TIME1: dfs 1 ;9
TIME2: dfs 1 ;10
DOT3: dfs 1 ;11
TIME3: dfs 1 ;12
TIME4: dfs 1 ;13
DOT4: dfs 1 ;14
TIME5: dfs 1 ;15
TIME6: dfs 1 ;16
L1A: dfs 1 ;18
L1B: dfs 1 ;19
L1C: dfs 1 ;20
L1D: dfs 1 ;21
L1E: dfs 1 ;22
L2A: dfs 1 ;
L2B: dfs 1 ;
L2C: dfs 1 ;
L2D: dfs 1 ;
L2E: dfs 1 ;
L3A: dfs 1 ;36
L3B: dfs 1 ;37
L3C: dfs 1 ;38
L3D: dfs 1 ;39
L3E: dfs 1 ;40
L4A: dfs 1 ;36
L4B: dfs 1 ;37
L4C: dfs 1 ;38
L4D: dfs 1 ;39
L4E: dfs 1 ;40
SERIAL1: dfs 1 ;104
SERIAL2: dfs 1 ;105
SERIAL3: dfs 1 ;107
gap: dfs 1
SERIAL4: dfs 1 ;110
SERIAL5: dfs 1 ;111
SERIAL6: dfs 1 ;113
AVERAGE1: DFS 1
AVERAGE2: DFS 1
AVERAGE3: DFS 1
AVERAGE4: DFS 1
AVERAGE5: DFS 1
RESULT1: DFS 1
RESULT2: DFS 1
RESULT3: DFS 1
RESULT4: DFS 1
ORLSER: DFS 1
SLNO1: DFS 1
SLNO2: DFS 1
ORG 0800H
MSG1: DFB " GLAMOUR INDUSTRIES LTD",0DH,0AH,0AH,0FFH
MSG2: DFB " GLAMOURPOONDI-201",0DH,0AH,0AH,0FFH
MSG3: DFB " DATE : ",0FFH
MSG4: DFB " TIME : ",0FFH
MSG5: DFB " Push In Load Test Report For WPA :",0FFH
MSG6: DFB " SL.NO PUSH IN LOAD REMARKS",0DH,0AH,0AH,0FFH
org 0000h
LJMP start
org 0200h
start: MOV sp,#20h
LCALL init
MOV A,#00H
MOV SLNO1,A
MOV A,#00H
MOV SLNO2,A
MOV R0,#30H ;STARTING STORAGE.
ZEROO: MOV @R0,#00H ;\
INC R0 ; |-WRITE ZERO IN MEMORY.
CJNE R0,#7FH,ZEROO ;/
RE: MOV R0,#30H ;BRING INTO STARTING STORAGE ADDRESS.
jnb ri,$ ;wait until ri is set
clr ri ;clear interrupt
MOV a,SBUF ;get character
mov @R0,a
CJNE a,#53h,re ;CHECK "S"
INC R0
rere: LCALL inchar
CJNE R0,#65h,rere ;NOT EQUAL MEANS GOTO LOOP.(ADD NO.OF DATA WITH STARTING ADDRESS OF MEMORY).
LCALL ADDSL ;\
LCALL SERCHE ; |--serial no. adding.
MOV A,ORLSER ;/
CJNE A,#01H,SECONDP ;check for is it starting serial no.
LCALL PRINTER
MOV R0,#30H ;BRING INTO STARTING STORAGE ADDRESS.
ljmp RE
SECONDP:LCALL second
LJMP RE
;----------------------------------------------------------------------
init: mov scon,#52h ; 8 bit UART mode
mov tmod,#20h ; use timer 1 as baud rate clk
mov th1,#-13 ; 2400 Baud with 12MHz xtal
setb tr1 ; start timer
ret
;----------------------------------------------------------------------
inchar: jnb ri,$ ; wait until ri is set
clr ri ; clear interrupt
MOV @R0,SBUF ; get character
INC R0
return: ret
;----------------------------------------------------------------------
SERCHE: MOV A,SLNO2
SWAP A
ORL A,SLNO1
MOV ORLSER,A
RET
;----------------------------------------------------------------------
ADDSL: CLR C
MOV A,SLNO1
ADDC A,#01H
DA A
MOV SLNO1,A
MOV A,SLNO2
ADDC A,#00H
DA A
MOV SLNO2,A
RET
;----------------------------------------------------------------------
PRINTER:NOP
NOP
setb P2+6
ACALL strobe
ACALL NEXTLINEINIT
ACALL DELAYP ;NOP-14 FOR DELAY.
MOV A,#0Eh ;"SHIFTOUT"
MOV P0,A
NOP
ACALL STROBE
MOV A,#1Bh ;\"ESCAPE"
MOV P0,A ; |
ACALL STROBE ; |
MOV A,#47h ; |"CHARACTER SIZING" from 0-72
MOV P0,A ; |
ACALL STROBE ;/
MOV A,#1Bh ;\"ESCAPE"
MOV P0,A ; |
ACALL STROBE ; |
MOV A,#2Dh ; |"CHARACTER SIZING" from 0-72
MOV P0,A ; |
ACALL STROBE ;/
ACALL DELAYP ;57-NOP DELAY REQUIRED.
ACALL STROBE
ACALL DELAYP
MOV R5,#00h
MOV DPTR,#MSG1 ;SEND BLANK LINE & "GLAMOUR INDUSTRIES LTD" HEADING.
PSEND: MOV A,R5
MOVC A,@A+DPTR
CJNE A,#0FFh,KKK1
ACALL DELAYP
ACALL NEXTLINEINIT
LJMP XXXX1
KKK1: MOV P0,A
ACALL STROBE
INC R5
LJMP PSEND
XXXX1: MOV R5,#00h
MOV DPTR,#MSG2 ;SEND "CHENNAI-58" HEADING.
PSEND1: MOV A,R5
MOVC A,@A+DPTR
CJNE A,#0FFh,KKK2
ACALL DELAYP
ACALL NEXTLINEINIT
LJMP XXXX2
KKK2: MOV P0,A
ACALL STROBE
INC R5
LJMP PSEND1
XXXX2: MOV R5,#00h
MOV DPTR,#MSG3 ;SEND "DATE:" HEADING.
PSEND2: MOV A,R5
MOVC A,@A+DPTR
CJNE A,#0FFh,KKK3
;ACALL DELAYP
;ACALL NEXTLINEINIT
LJMP XXXX3
KKK3: MOV P0,A
ACALL STROBE
INC R5
LJMP PSEND2
XXXX3: MOV P0,DATE1 ;SEND DATE DATA.
ACALL STROBE
MOV P0,DATE2 ;SEND DATE DATA.
ACALL STROBE
MOV P0,DOT1 ;SEND DOT DATA.
ACALL STROBE
MOV P0,DATE3 ;SEND DATE DATA.
ACALL STROBE
MOV P0,DATE4 ;SEND DATE DATA.
ACALL STROBE
MOV P0,DOT2 ;SEND DOT DATA.
ACALL STROBE
MOV P0,DATE5 ;SEND DATE DATA.
ACALL STROBE
MOV P0,DATE6 ;SEND DATE DATA.
ACALL STROBE
MOV A,#20H
MOV P0,A ;SEND SPACE DATA.
ACALL STROBE
MOV A,#0DH
MOV P0,A ;SEND SPACE DATA.
ACALL STROBE
MOV A,#0AH
MOV P0,A ;SEND SPACE DATA.
ACALL STROBE
MOV R5,#00h
MOV DPTR,#MSG4 ;SEND "TIME:" HEADING.
PSEND3: MOV A,R5
MOVC A,@A+DPTR
CJNE A,#0FFh,KKK4
;ACALL DELAYP
;ACALL NEXTLINEINIT
LJMP XXXX4
KKK4: MOV P0,A
ACALL STROBE
INC R5
LJMP PSEND3
XXXX4: MOV P0,TIME1 ;SEND TIME DATA.
ACALL STROBE
MOV P0,TIME2 ;SEND TIME DATA.
ACALL STROBE
MOV P0,DOT3 ;SEND DOT DATA.
ACALL STROBE
MOV P0,TIME3 ;SEND TIME DATA.
ACALL STROBE
MOV P0,TIME4 ;SEND TIME DATA.
ACALL STROBE
MOV P0,DOT4 ;SEND DOT DATA.
ACALL STROBE
MOV P0,TIME5 ;SEND TIME DATA.
ACALL STROBE
MOV P0,TIME6 ;SEND TIME DATA.
ACALL STROBE
MOV A,#20H
MOV P0,A ;SEND SPACE DATA.
ACALL STROBE
MOV A,#0DH
MOV P0,A ;SEND SPACE DATA.
ACALL STROBE
MOV A,#0AH
MOV P0,A ;SEND SPACE DATA.
ACALL STROBE
MOV R5,#00h
MOV DPTR,#MSG5 ;SEND "Push In Load Test Report For WPA :" HEADING.
PSEND4: MOV A,R5
MOVC A,@A+DPTR
CJNE A,#0FFh,KKK5
;ACALL DELAYP
;ACALL NEXTLINEINIT
LJMP XXXX5
KKK5: MOV P0,A
ACALL STROBE
INC R5
LJMP PSEND4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -