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

📄 dm134.txt

📁 控制LED灯渐亮渐灭分段显示和简单图形显示程序
💻 TXT
字号:

;use for lx ,gray=8
serial        equ  p1.7 ;data output pin
clock         equ  p1.6 ;clk output pin
latch         equ  p1.5 ;latch output pin
enable        equ  p1.4 ;enable outputpin
outl          equ  20h  ;out0~out7 data
outh          equ  21h  ;out8~out15 data


outtmp        equ  32h  ;output data tmp
;use for gray control
out0gray      equ  33h  ;pin out0 gray
out1gray      equ  34h  ;pin out1 gray
out2gray      equ  35h  ;     .
out3gray      equ  36h  ;     .   
out4gray      equ  37h  ;     .
out5gray      equ  38h  ;
out6gray      equ  39h  ;
out7gray      equ  3ah  ;
out8gray      equ  3bh  ;
out9gray      equ  3ch  ;
out10gray     equ  3dh  ;
out11gray     equ  3eh  ;
out12gray     equ  3fh  ;     .
out13gray     equ  40h  ;     .
out14gray     equ  41h  ;     .
out15gray     equ  42h  ;pin out15 gray
outgraytmp0   equ  43h  ;outgraytmp0~7 use for gray shift
outgraytmp1   equ  44h  ;     .
outgraytmp2   equ  45h  ;     .
outgraytmp3   equ  46h  ;     .
outgraytmp4   equ  47h  ;     .
outgraytmp5   equ  48h  ;     .
outgraytmp6   equ  49h  ;     .
outgraytmp7   equ  4ah  ;     .
grayset       equ  0bh  ;用于保存第一位数据的灰度,方便记录跑了一圈
outtime       equ  4ch  ;用于保存一帧数据的时间

outtimelong   equ  13   ;set one frap time
outtimeshort  equ  9    ;set one frap time
 
out0          equ  00h  ;pin out0
out1          equ  01h  ;pin out1
out2          equ  02h  ;    .
out3          equ  03h  ;    .   
out4          equ  04h  ;    . 
out5          equ  05h  ;
out6          equ  06h  ;    
out7          equ  07h  ;
out8          equ  08h  ;
out9          equ  09h  ;
out10         equ  0ah  ;    .
out11         equ  0bh  ;    .
out12         equ  0ch  ;    .
out13         equ  0dh  ;    .
out14         equ  0eh ;pin out14
out15         equ  0fh ;pin out15
roundbit      equ  f0 ;round flag

gray          equ  0    ;set gray
graymax       equ  31    ;gray-1

;;main program

             org 0000h
	     ljmp 0030h

	     org 0030h

	     mov r0,#07fh
initramloop: mov @r0,#0
             djnz r0,initramloop

             lcall init
             lcall tran16bitz
	     clr enable
	     mov r1,#0
	     djnz r1,$
	     setb enable
; long       
m:           mov r6,#8

main:        ;mov out0gray,#31
             mov outgraytmp6,#31
             mov outgraytmp5,#20
	     mov outgraytmp4,#15
	     mov outgraytmp3,#13
	     mov outgraytmp2,#7
	     mov outgraytmp1,#3
	     mov outgraytmp0,#1
	     mov grayset,outgraytmp6
	     mov outtime,#outtimelong           
main0:	     lcall outgrayshift
	     lcall doit
	     jnb roundbit,main0
             djnz r6,main
	     ;sjmp main0
;shor and fast

             mov r6,#3
shortfast:   mov outgraytmp6,#31
	     mov outgraytmp5,#20
	     mov outgraytmp4,#10
	     mov outgraytmp3,#3
	     mov outgraytmp2,#gray
	     mov outgraytmp1,#gray
	     mov outgraytmp0,#gray
	     mov grayset,outgraytmp6
	     mov outtime,#outtimeshort
             mov b,#22
      
main1:	     push b
             lcall outgrayshift
	     lcall doit
	     pop b
 	     djnz b,main1
             djnz r6,shortfast
             ;ret
	     ljmp m
             

; reset all ram and output pins
init:        clr serial
             clr clock
	     setb latch
	     setb enable
	     clr p1.0
	     clr p1.1
	     clr roundbit
	     mov sp,#5fh
	     ret

;now,it's show time
doit:	     mov r4,outtime          ;1 frap time
doit0:	     mov r3,#31               ;out gray 
             
doit1:	     lcall pwmmaker           ;set outl and out outh
	     lcall tran16bitz
	     lcall tran16bitdata      ;translation data
	     djnz r3,doit1
             djnz r4,doit0 
	     ret

;creat pwm
pwmmaker:    push acc
             mov a,out0gray
             lcall subber
	     mov out0,c

	     mov a,out1gray
             lcall subber
	     mov out1,c

	     mov a,out2gray
             lcall subber
	     mov out2,c

	     mov a,out3gray
             lcall subber
	     mov out3,c

	     mov a,out4gray
             lcall subber
	     mov out4,c

	     mov a,out5gray
             lcall subber
	     mov out5,c

	     mov a,out6gray
             lcall subber
	     mov out6,c

	     mov a,out7gray
             lcall subber
	     mov out7,c

	     mov a,out8gray
             lcall subber
	     mov out8,c

	     mov a,out9gray
             lcall subber
	     mov out9,c

	     mov a,out10gray
             lcall subber
	     mov out10,c

	     mov a,out11gray
             lcall subber
	     mov out11,c

	     mov a,out12gray
             lcall subber
	     mov out12,c

	     mov a,out13gray
             lcall subber
	     mov out13,c

	     mov a,out14gray
             lcall subber
	     mov out14,c

	     mov a,out15gray
             lcall subber
	     mov out15,c        ;;light at the end

	     mov a,out15gray
	     jz pwmmaker1
;	     mov a,out14gray
;	     jz pwmmaker1
;	     setb out15
             clr out8

pwmmaker1:   pop acc
	     ret






; judge output is '1'or'0'
subber:      clr c
	     subb a,r3
	     cpl c
             ret
             
        
       
;change outgray
outgrayshift:
             mov b,out15gray
             mov out15gray,out14gray
             mov out14gray,out13gray
             mov out13gray,out12gray
             mov out12gray,out11gray
             mov out11gray,out10gray
             mov out10gray,out9gray
             mov out9gray,out8gray
             mov out8gray,out7gray
             mov out7gray,out6gray
             mov out6gray,out5gray
             mov out5gray,out4gray
             mov out4gray,out3gray
             mov out3gray,out2gray
             mov out2gray,out1gray
             mov out1gray,out0gray
             mov out0gray,outgraytmp6
	     mov outgraytmp6,outgraytmp5
	     mov outgraytmp5,outgraytmp4
	     mov outgraytmp4,outgraytmp3
             mov outgraytmp3,outgraytmp2
             mov outgraytmp2,outgraytmp1
             mov outgraytmp1,outgraytmp0
             mov outgraytmp0,b
             mov a,outgraytmp6
	     cjne a,grayset,outgrayshift0
	     setb roundbit
	     ret
outgrayshift0:
             clr roundbit
;	     setb p3.7
	     ret

;send 16bits data in outl outh ;set latch-lef,enable-lef
tran16bitdata:
             setb enable
             push acc
             setb serial
             setb clock
             clr clock
             clr serial
             mov outtmp,outh
             lcall tran8bitdata
             mov outtmp,outl
             lcall tran8bitdata
             clr latch;;;;;;;;;;;;;
             clr enable
             setb latch;;;;;;;;;;;;;
	     pop acc
	     ;mov p0,outl
	     ;mov p2,outh
             ret


;send 8bits data  in gray-tmp hight bit first 
tran8bitdata:
             mov a,#80h
             mov r2,#8
loop:        push acc
             anl a,outtmp
             jz  outgray0
             setb serial
             setb clock
             clr clock
             sjmp outag
outgray0:    clr serial
             setb clock
             clr clock 
outag:       pop acc
             rr a
             djnz r2,loop
             ret



delay:       mov r5,#100
delay0:      mov r7,#0
             djnz r7,$
	     djnz r5,delay0
 	     ret


tran16bitz:  mov outtmp,#00h
             lcall tran8bitdata
	     lcall tran8bitdata
             clr latch
             clr enable
             setb latch
	    ; pop acc
             ret
    
end             

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -