?? ch2040k1.asm
字號:
;****************************************************************************
;*電子廣告屏幕程序8*1 ch2040K1.ASM 張勁恒設計 2007年11月21日 13879197658 正版* 從機程序1
;****************************************************************************
fssjr equ 69h ;從29C512讀出的數據現放在69H的發送數據單元FSSJr里 總計12屏數據
fssjg equ 68h ;單色顯示
hclr bit p1.0 ;行掃描數據清零控制引腳信號
hsi bit p1.1 ;行掃描串行數據輸入引腳信號
hrck bit p1.2 ;移位寄存器里的數據存入到存儲寄存器的控制信號,上升沿有效
hsck bit p1.3 ;串行數據在移位寄存器里進行諸位移動的控制信號
sjgsi bit p1.4 ;確認數據傳出控制
sjrsi bit p1.5 ;紅色列掃描數據輸入信號
sjrck bit p1.6 ;列掃描數據存入存儲寄存器控制信號
sjsck bit p1.7 ;列掃描數據在移位寄存器里進行諸位移動的控制信號
ORG 0000h
LJMP START1
ORG 0023H ;串行中斷入口地址
LJMP CHUANXJS ;串行通訊入口地址
ORG 0030H
start1:
MOV TMOD,#20H ;設置定時器T1工作方式2為靠可再裝入8位計數器
MOV SCON,#50H ;設置串行口控制寄存器SCON工作方式1為10位異步收發,波特率可變
MOV PCON,#00H ;設置SMOD為1,波特率翻倍 11.0592MHz
MOV TH1,#0FDH ;置定時器T1初值波特率為F4=2400*2=4800 FA=9600 FD=19200 FE=28800 FF=57600
MOV TL1,#0FDH ;
CLR ET1 ;禁止T1產生中斷
SETB ES ;允許串口產生中斷
SETB PS
SETB TR1 ;使T1開始計數
clr ET0
MOV 4FH,#00H
MOV 4EH,#00H
MOV 4DH,#00H
SETB EA ;打開所有中斷允許
MOV 8FH,#01H
mov sp,#70h
stttt: mov r1,#80h ;
mov r3,#0 ;
mov r4,#0 ;
mov r5,#0 ;
mov r7,#55h ;
mov r0,#0 ;
mov r2,#0 ;
mov r6,#0
;******
mov 42h,#0
mov 43h,#0
mov 44h,#40
mov 46h,#0
mov 49h,#0
mov 60h,#00h ;串行中斷接收低4位數據保存
mov 61h,#00h ;串行中斷接收高4位數據保存
mov 62h,#00h ;
mov 63h,#00h ;串行中斷接收一個字節8位數據保存
mov 64h,#00h ;讀出紅色數據的高8位地址保存
mov 65h,#00h ;讀出紅色數據的低8位地址保存
mov 66h,#00h ;保存讀出多少個55H 255GE
mov 67h,#00h ;保存讀出多少列55H 10LIE
mov 6ah,#00h ;讀取數據地址增量個數16 32
MOV 6BH,#8 ;移位8位數據計數
mov 6Ch,#00h ;延時顯示計數保存
mov 6Dh,#00h ;移動多少列160
mov 6eh,#00h ;寫入數據的高8位地址保存
mov 6fh,#00h ;寫入數據的低8位地址保存
mov dptr,#0000h ;**********************
mov 64h,dph
mov 65h,dpl
mov 54h,dph
mov 55h,dpl
mov 5ch,54h
mov 5dh,55h
mov 4ch,54h
mov 4dh,55h
mov 59h,#0
setb sjrsi
mov r3,#00h
;**********************
;**********************
stat: cjne r5,#00h,stat
mov dph,64h
mov dpl,65h
st1: mov a,p1
anl a,#11111000b
orl a,r3
mov p1,a
mov 58h,#16
mov 5ch,4ch
mov 5dh,4dh
lcall adlcd4
mov dph,5ch
mov dpl,5dh
dsj0: movx a,@dptr
inc dptr
lcall sjyw
inc r4
cjne r4,#5,dsj0
mov r4,#0
mov 58h,#8
mov 5ch,4ch
mov 5dh,4dh
lcall adlcd4
mov dph,5ch
mov dpl,5dh
dsj1: movx a,@dptr
inc dptr
lcall sjyw
inc r4
cjne r4,#5,dsj1
mov r4,#0
mov dph,4ch
mov dpl,4dh
dsj2: movx a,@dptr
inc dptr
lcall sjyw
inc r4
cjne r4,#5,dsj2
mov r4,#0
lcall incdp
mov 4ch,dph
mov 4dh,dpl
lcall sjcc
lcall ddly
lcall xcgy
inc r3
cjne r3,#8,st1
mov r3,#0
mov dph,64h
mov dpl,65h
mov 4ch,64h
mov 4dh,65h
ljmp stat
;**********************
adlcd: clr c
mov a,5dh
add a,#10
mov 5dh,a
mov a,5ch
addc a,#0
mov 5ch,a
mov dph,5ch
mov dpl,5dh
ret
adlcd4: mov 57h,58h
llc4: lcall adlcd
djnz 57h,llc4
ret
XCGY: SETB SJRSI
xcg1: lcall xcyz
inc r4
cjne r4,#15,xcg1
mov r4,#0
lcall sjcc
RET
xcyz: MOV 6BH,#8
xcy1: SETB SJSCK
NOP
CLR SJSCK
DJNZ 6BH,xcy1
RET
ddly: mov 7ah,#18
dy1: mov 7bh,#200
djnz 7bh,$
djnz 7ah,dy1
ret
;**********************
incdp: inc dptr
inc dptr
inc dptr
inc dptr
inc dptr
ret
HSMQL: CLR HRCK
NOP
SETB HRCK
RET
;***********************8
SJYW: MOV 6BH,#8
;**************
;MOV A,FSSJR ;將讀到的紅色數據移8位但不輸出只移8位
SJW1: RRC A
MOV SJRSI,C
SETB SJSCK
CLR SJSCK
DJNZ 6BH,SJW1
RET
SJCC: SETB SJRCK ;將數據輸出存儲
CLR SJRCK
RET
dely: mov 5ah,#240 ; 顯示延時
d1: mov 5bh,#250
djnz 5bh,$
djnz 5ah,d1
ret
;*************************************************************
wait: jbc ti,wait1 ;發送等待
sjmp wait
wait1: nop
ret
read: jbc ri,read1 ;接收等待
sjmp read
read1: nop
ret
;*************************************************************
CHUANXJS: PUSH A
CLR EA
CLR RI
mov a,sbuf
mov 60h,a
anl 60h,#0fh
jsdm1p: cjne a,#101,jsdm2p
mov r5,#55h
mov r1,#80H
mov r7,#67h
mov dptr,#0000H ;寫入存儲器地址
mov 6eh,dph
mov 6fh,dpl
NOP
CLR HRCK
NOP
SETB HRCK
mov a,#03
mov sbuf,a
lcall wait
ljmp jsjs
nop
jsdm2p: cjne a,#35h,jsdm3p
inc r2
cjne r2,#1,xsxs1
mov dptr,#0 ;********************
mov 64h,dph
mov 65h,dpl
mov a,#03
mov sbuf,a
lcall wait
ljmp jsjs
xsxs1: cjne r2,#2,xsxs2
mov r2,#0
mov dptr,#200 ;********************
mov 64h,dph
mov 65h,dpl
mov a,#03
mov sbuf,a
lcall wait
ljmp jsjs
xsxs2: cjne r2,#3,xsxs3
mov dptr,#256 ;********************
mov 64h,dph
mov 65h,dpl
mov a,#03
mov sbuf,a
lcall wait
ljmp jsjs
xsxs3: cjne r2,#4,xsxs4
mov r2,#0
mov dptr,#384 ;********************
mov 64h,dph
mov 65h,dpl
mov a,#03
mov sbuf,a
lcall wait
xsxs4: ljmp jsjs
jsdm3p: cjne a,#118,jsdm1
mov r5,#00h
mov r1,#80h
mov r7,#55h
mov r3,#0
mov r4,#0
mov r0,#0 ;
mov r2,#0 ;
mov 42h,#0
mov 43h,#0
mov 44h,#1
mov 46h,#0
mov 49h,#0
mov 6ch,#0
mov 6dh,#0
mov 6ah,#16
;********************
mov dptr,#5555h
mov a,#0aah
movx @dptr,a
mov dptr,#2aaah
mov a,#55h
movx @dptr,a
mov dptr,#5555h
mov a,#0a0h
movx @dptr,a
lcall dely
mov dptr,#0000h
mov 64h,dph
mov 65h,dpl
mov 54h,dph
mov 55h,dpl
mov 56h,dph
mov 57h,dpl
mov 58h,#1
;******
mov 6eh,#00H
mov 6fh,#00H
ljmp jsjs
jsdm1: anl a,#0f0h
cjne a,#00h,jsjs
cjne r7,#67h,jsdm2
mov r7,#76h
mov 61h,60h
mov a,#03
mov sbuf,a
lcall wait
ljmp jsjs
jsdm2: cjne r7,#76h,jsjs
mov r7,#67h
mov a,60h
swap a
orl a,61h
mov 63h,a
mov @r1,a
inc r1
cjne r1,#00h,ccsj
mov r1,#80h
;****************
mov dptr,#5555h
mov a,#0aah
movx @dptr,a
mov dptr,#2aaah
mov a,#55h
movx @dptr,a
mov dptr,#5555h
mov a,#0a0h
movx @dptr,a
mov dph,6eh
mov dpl,6fh
xrsj: mov a,@r1
MOVX @DPTR,A
INC DPTR
inc r1
cjne r1,#00h,xrsj
mov r1,#80h
mov 6eh,dph
mov 6fh,dpl
ccsj: mov a,#03
mov sbuf,a
lcall wait
jsjs:
POP A
SETB EA
RETI
;*************************************************************
end
SJYW: MOV 6BH,#8
;**************
MOV A,FSSJR ;將讀到的紅色數據移8位但不輸出只移8位
SJW1: JB ACC.0,ST14
CLR SJRSI
SJMP SJP
ST14: SETB SJRSI
SJP: RR A
SETB SJSCK
NOP
CLR SJSCK
DJNZ 6BH,SJW1
RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -