⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch2040k1.asm

📁 这是我的一个源程序
💻 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 + -