📄 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 + -