历史上的今天
今天是:2025年12月26日(星期五)
2022年12月26日 | ZQ9712单片机汇编控制源程序
2022-12-26 来源:zhihu
;************IC:ZQ9712**************
;编缉: 版本:1.0 时间:2005.9.30
;功能: 七种模式 1.七色段填充
; 2.七色单填充
; 3.七色整体变化
;****10米**** 4.七色段慢追
; 5.七色段快追
; 6.七色流水
; 7.七色浪涌
;*********一般寄存器*************
p5==0x05
p6==0x06
iocb==0x0c
iocd==0x0d
pc==0x02
status==0x03
;*********位定义**********
c==0
z==2
data==0
LI==2
clk==1
;*********自定义*********
x1==13h
x1a==27h
y1==14h
xy==15h
temp==16h
temp0==1bh
temp1==1ch
temp_js==1dh
temp_js1==1eh
colorcs==17h
colorcs3==18h
swk==19h
count1==20h
count1a==26h
time2==21h
cs==22h
csa==28h
sw_cs1==23h
time1==24h ;速度的快慢
sumled==25 ;灯亮的个数
; piansu==3 ;可计算长度
modeum==1ah
lycolorcs==10h
ly5cs==11h
;***********主程序**************
ORG 00H
jmp main
org 0x11
main:
MOV A,@00H
IOW P5
mov a,@0xf0 ;port5下拉
iow iocb
mov a,@0x00
iow iocd ;p6口上拉使能
clr p5
clr colorcs
clr time2
clr sw_cs1
clr swk
clr x1
clr x1a
;*************清屏******************
qingpin:
mov a,@2 ; 2x250=500 定义20米
mov x1a,a
qpa2 mov a,@250 ;清250个点
mov x1,a
qp1 mov a,@0b00000000 ;给颜色表COLORGB=1
; call colorgb
call send3
djz x1
jmp qp1
djz x1a
jmp qpa2
call zli
; jmp mode6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; jmp mode7
jmp mode1
colorgb:
add pc,a
nop
; retl @0b00000000 ;无色-1
retl @0b00000001 ;红---2
retl @0b00000010 ;绿----3
retl @0b00000100 ;蓝----4
retl @0b00000011 ;红绿--5
retl @0b00000110 ;绿蓝--6
retl @0b00000101 ;红蓝 --7
retl @0b00000111 ;红绿蓝---8
; retl @0b00000000 ;无色---9
colorgb_1:
add pc,a
nop
retl @0b00000001 ;红---2
retl @0b00000000
retl @0b00000010 ;绿----3
retl @0b00000000
retl @0b00000100 ;蓝----4
retl @0b00000000
retl @0b00000011 ;红绿--5
retl @0b00000000
retl @0b00000110 ;绿蓝--6
retl @0b00000000
retl @0b00000101 ;红蓝 --7
retl @0b00000000
retl @0b00000111 ;红绿蓝---8
retl @0b00000000 ;无色---9
colorgb_2:
add pc,a
nop
retl @0b00000011 ;无色-1
retl @0b00000101 ;红---2
retl @0b00000111 ;绿----3
retl @0b00000111 ;蓝----4
retl @0b00000111 ;红绿--5
retl @0b00000101 ;绿蓝--6
retl @0b00000111 ;红蓝 --7
retl @0b00000101 ;红绿蓝---8
retl @0b00000011 ;无色---9
lycolorb:
add pc,a
nop
retl @0b00000001 ;红---2
retl @0b00000011 ;红绿--5
retl @0b00000010 ;绿----3
retl @0b00000110 ;绿蓝--6
retl @0b00000100 ;蓝----4
retl @0b00000101 ;红蓝 --7
retl @0b00000111 ;红绿蓝---8
wbcolorb:
add pc,a
nop
retl @0b00000001 ;红
retl @0b00000011 ;红绿
retl @0b00000010 ;绿
retl @0b00000110 ;绿蓝
retl @0b00000100 ;蓝
retl @0b00000101 ;蓝红
retl @0b00000001 ;红
ZLI:
NOP
Bs P5,LI
mov a,@25
mov csa,a
zli1 djz csa
jmp zli1
clr csa
nop
Bc P5,LI
nop
mov a,@15
mov csa,a
zli2 djz csa
jmp zli2
clr csa
nop
RET
ZCLK:
NOP
mov a,@15
mov csa,a
zclk1 djz csa
jmp zclk1
clr csa
NOP
Bc P5,CLK
nop
mov a,@15
mov csa,a
zclk2 djz csa
jmp zclk2
clr csa
NOP
Bs P5,CLK
NOP
mov a,@25
mov csa,a
zclk3 djz csa
jmp zclk3
clr csa
NOP
RET
send3:
MOV TEMP,A
MOV A,@3
MOV CS,A
LOOPR4 BS P5,DATA ;p50
RRC TEMP
;
mov a,@10
mov csa,a
lcsa djz csa ;短暂延时
jmp lcsa
clr csa
JBC STATUS,C
BC P5,DATA
BS P5,CLK
;
mov a,@15
mov csa,a
lcsa1 djz csa ;短暂延时
jmp lcsa1
clr csa
nop
BC P5,CLK ;p51
nop
DJZ CS
JMP LOOPR4
ret
;**************模式1:七色段填充***************
;********每点32MS速度
;*******时间:32MSX42米X25点=33600MS=33.6S
mode1:
mov a,@100 ;模式1时间速度=150
mov time1,a
mov a,@6 ;遍7X6=42米
mov modeum,a
mode1_2 clr colorcs
colorchang mov a,@sumled ;=25点为1米一段
mov count1,a
inc colorcs
loop mov a,colorcs ;指定显示什么颜色查颜色表
call colorgb ;调用颜色表
call send3 ;调用发射3位数据
call zli ;显示3位数据
call delay1
mov a,swk ;swk=1
xor a,@1
jbs status,z ;结果为0,z=1
jmp jxmode1_1
clr colorcs
inc swk ;swk=2
jmp xfmode1_a
jxmode1_1 djz count1
jmp loop
clr count1
mov a,@7 ;查表第几行
xor a,colorcs
jbs status,z
jmp colorchang
clr colorcs
xfmode1_a mov a,swk
xor a,@2
jbs status,z
jmp jx2
jmp mode1_2
jx2 djz modeum
jmp mode1_2
;***************模式2:七色单填充********************
;********每点32MS速度
;*******时间:32MSX255点X7=57120MS=57.12S
mode2:
mov a,@1 ;piansu为100米
mov modeum,a
mode2_2 clr colorcs
; inc colorcs
mode2_1:
inc colorcs
mov a,@1 ;长度为10米2x250=250
mov count1a,a
loop1_a mov a,@255 ;灯亮个数=255
mov count1,a
loop1:
mov a,colorcs ;指定显示什么颜色查颜色表
call colorgb ;调用颜色表
call send3 ;调用发射3位数据
call zli ;显示3位数据
call delay1
mov a,swk ;swk=3
xor a,@3
jbs status,z ;结果为0,z=1
jmp jxmode2_1
inc swk ;swk=4
jmp xfmode2_a
jxmode2_1 djz count1
jmp loop1
djz count1a
jmp loop1_a
clr count1a
clr count1
mov a,@7 ;查表第几行
xor a,colorcs
jbs status,z
jmp mode2_1
xfmode2_a mov a,swk ;swk=4
xor a,@4
jbs status,z
jmp jxm2
jmp mode2_2
jxm2 djz modeum
jmp mode2_2
;****************模式3:七色整体变化*********************
;********每点**MS速度
;*******时间:**25S*****
mode3:
mov a,@4 ;piansu
mov modeum,a
mode3_3 clr colorcs
mode3_2 inc colorcs
mov a,@1 ;长度为10米1x250=250点
mov count1a,a
mode3_1 mov a,@250 ;灯亮个数
mov count1,a
; inc colorcs
loop3 mov a,colorcs ;指定显示什么颜色查颜色表
call colorgb ;调用颜色表
call send3 ;调用发射3位数据
NOP
mov a,swk ;swk=5
xor a,@5
jbs status,z ;结果为0,z=1
jmp jxmode3
inc swk ;swk=6
jmp xfmode3
jxmode3 djz count1
jmp loop3
djz count1a
jmp mode3_1
nop
call zli ;显示3位数据
nop
mov a,@30
mov cs,a
too1 call delay1
djz cs
jmp too1
mov a,@7 ;查表第几行
xor a,colorcs
jbs status,z
jmp mode3_2
xfmode3 mov a,swk ;swk=6
xor a,@6
jbs status,z
jmp jxm3
jmp mode3_3
jxm3 djz modeum
jmp mode3_3
;****************模式4:七色段慢追*******************
;********每点16MS速度
;*******时间:16MSX2100点=33600MS=33.6S
mode4:
mov a,@50 ;追的速度
mov time1,a
mov a,@10 ;piansu=10X7X30=2100点
mov modeum,a
mode4_1 clr colorcs
mode4_2 mov a,@10 ;灯亮个数
mov count1,a
inc colorcs
loop4 mov a,colorcs ;指定显示什么颜色查颜色表
call colorgb_1 ;调用颜色表
call send3 ;调用发射3位数据
call delay1
mov a,swk ;swk=7
xor a,@7
jbs status,z ;结果为0,z=1
jmp jxmode4
inc swk ;swk=8
jmp xfmode4
jxmode4 call delay1
call zli ;显示3位数据
djz count1
jmp loop4
mov a,@5 ;灯灭个数5
mov count1,a
inc colorcs
loop5 mov a,colorcs ;指定显示什么颜色查颜色表
call colorgb_1 ;调用颜色表
call send3 ;调用发射3位数据
call delay1
mov a,swk ;swk=7
xor a,@7
jbs status,z ;结果为0,z=1
jmp jxmode4_1
inc swk ;swk=8
jmp xfmode4
jxmode4_1 call delay1
call zli ;显示3位数据
djz count1
jmp loop5
clr count1
mov a,@14 ;查表第几行
xor a,colorcs
jbs status,z
jmp mode4_2
xfmode4 mov a,swk ;swk=8
xor a,@8
jbs status,z
jmp jxm4
jmp mode4_1
jxm4 djz modeum ;piansu=6
jmp mode4_1
;****************模式5七色段快追******************
;********每点3.2MS速度
;*******时间:3.2MSX8750点=28000MS=28S
mode5:
mov a,@10
mov time1,a
mov a,@5 ;piansu=6:5X250X7=8750点
mov modeum,a
mode5_1 clr colorcs
mode5_2 mov a,@10 ;灯亮个数
mov count1,a
inc colorcs
md51 mov a,colorcs ;指定显示什么颜色查颜色表
call colorgb_1 ;调用颜色表
call send3 ;调用发射3位数据
call delay1
mov a,swk ;swk=9
xor a,@8
jbs status,z ;结果为0,z=1
jmp jxmode5
inc swk ;swk=10
jmp xfmode5
jxmode5 call zli ;显示3位数据
djz count1 ;=10
jmp md51
mov a,@240 ;灯灭个数240
mov count1,a
inc colorcs
md52 mov a,colorcs ;指定显示什么颜色查颜色表
call colorgb_1 ;调用颜色表
call send3 ;调用发射3位数据
call delay1
mov a,swk ;swk=9
xor a,@9
jbs status,z ;结果为0,z=1
jmp jxmode5_1
inc swk ;swk=10
jmp xfmode5
jxmode5_1 call zli ;显示3位数据
djz count1 ;=240
jmp md52
clr count1
mov a,@14 ;查表第几行
xor a,colorcs
jbs status,z
jmp mode5_2
xfmode5 mov a,swk ;swk=10
xor a,@10
jbs status,z
jmp jxm5
jmp mode5_1
jxm5 djz modeum ;piansu=6
jmp mode5_1
;****************模式6七色流水********************
;********每点**MS速度
;*******时间:***30S****
mode6:
mov a,@20
mov time1,a
mov a,@45 ;piansu=10
mov modeum,a
lyxf2 clr lycolorcs
lyxf1 inc lycolorcs
mov a,@5
mov ly5cs,a ;灯亮个数
lyxf mov a,lycolorcs
call lycolorb
call send3
call delay1
call zli
mov a,swk ;swk=11
xor a,@11
jbs status,z
jmp jxm6
inc swk ;swk=12
jmp lyxf2
jxm6 djz ly5cs
jmp lyxf
mov a,@7 ;查表第几行
xor a,lycolorcs
jbs status,z
jmp lyxf1
mov a,swk ;swk=12
xor a,@12
jbs status,z
jmp jxm6_1
; jmp lyxf2
jxm6_1 djz modeum
jmp lyxf2
; jmp mode1
;**************模式7:七色浪涌***************
mode7:
mov a,@15
mov time1,a ;浪涌时间
mov a,@12 ;遍数=10
mov modeum,a
md7_5 clr temp0
clr temp1
clr temp_js
clr temp_js1
clr colorcs
mov a,@6
mov temp_js1,a
md7_4 inc colorcs
mov a,@6
mov temp_js,a
md7_3 mov a,temp_js
mov temp0,a
sub a,@7
mov temp1,a
md7_1 mov a,colorcs
call wbcolorb
call send3
call zli
call delay1
mov a,swk ;swk=13
xor a,@11
jbs status,z
jmp jxm7_1
inc swk ;=14
jmp md7_5
jxm7_1 djz temp0
jmp md7_1
md7_2 mov a,colorcs
add a,@1
call wbcolorb
call send3
call zli
call delay1
mov a,swk ;swk=13
xor a,@11
jbs status,z
jmp jxm7_2
inc swk ;=14
jmp md7_5
jxm7_2 djz temp1 ;
jmp md7_2
djz temp_js ;=6
jmp md7_3
djz temp_js1 ;=6
jmp md7_4
mov a,swk ;swk=14
xor a,@12
jbs status,z
jmp jxm7_8
; jmp md7_5
jxm7_8 djz modeum
jmp md7_5
mov a,swk ;swk=14
xor a,@12
jbs status,z
jmp qingpin
jmp mode6
; jmp qingpin
;******************延时程序***********************
delay1:
clr x1
clr y1
mov a,time1 ;T1 时间
mov x1,a
l44 wdtc
mov a,@100
mov y1,a
;
jbs p6,0
jmp sw1
jmp l33
;
sw1 jbc p6,0
jmp sw1
nop
nop
nop
nop
jbc p6,0
jmp sw1
inc swk
sw2 jbs p6,0
jmp sw2
mov a,swk
xor a,@1
jbs status,z ;结果为0,Z=1
jmp swp1
jmp mode1
swp1 mov a,swk
xor a,@3
jbs status,z ;结果为0,Z=1
jmp swp2
jmp mode2
swp2 mov a,swk
xor a,@5
jbs status,z ;结果为0,Z=1
jmp swp3
jmp mode3
swp3 mov a,swk
xor a,@7
jbs status,z ;结果为0,Z=1
jmp swp4
jmp mode4
swp4 mov a,swk
xor a,@9
jbs status,z ;结果为0,Z=1
jmp swp5 ;jmp l33
jmp mode5
swp5 mov a,swk
xor a,@11
jbs status,z ;结果为0,Z=1
jmp swp6
jmp mode6
swp6 mov a,swk
xor a,@13
jbs status,z ;结果为0,Z=1
jmp l33 ;swp7
clr swk
jmp mode1 ;mode7
; swp7 mov a,swk
; xor a,@15
; jbs status,z ;结果为0,Z=1
; jmp l33
; clr swk
; jmp mode1
l33 djz y1
jmp l33
djz x1
jmp l44
ret
delay2:
clr x1
clr y1
mov a,@45 ;30 ;T2 时间=50
mov x1,a
zl44 wdtc
mov a,@50
mov y1,a
zl33 djz y1
jmp zl33
djz x1
jmp zl44
ret
end
史海拾趣
|
通常在进入设计周期末尾之前,天线设计不会引起太大注意。原因或许就是因为它们是无源器件,在RF信号通路中所起的作用看来不大。也可能是是因为设计师希望他们一直有能力在剩余空间内配置天线设计和进行元件选择。还有可能是因为天线不是摩尔定律的 ...… 查看全部问答> |
|
我用得CJ1M,设计本身是用422口与DSP通讯,通讯9次,每包250个字节,每次是PCL申请数据,dsp在发送一包,现象是发送完第一包,dsp正确接收到后,就不发送第二包的神情数据了,采用软件监视模式发现程序停留在PMCR那一行,而不是捕捉PMCR完成标志下 ...… 查看全部问答> |
|
算下来小硕毕业后正好工作有三年了,可对于以后的发展方向却始终迷茫。 开始的一年半,主要做产品方案级的软件,感觉自己还比较喜欢也比较有自信。后来去了另外的部门,做音频格式的软件解码,大约一年的时间,做了两个格式的解码和一个格式的编 ...… 查看全部问答> |
|
本人菜鸟,刚接触pci,用的是pci9054做一个运动控制卡 在中断部分遇到很多疑惑,求高人指点 1. pci本地中断,我在datasheet上看到的只有一个pin154为LINT#,可是在很多资料上看到写LINT#[2:1],我现在本地端有两个外部中断源,该怎么处理? 2.在 ...… 查看全部问答> |
|
各位大侠,我是新手,问大家一个比较低级的问题, 我们公司准备做AT91sam9261ek板上的开发,我从atmel官方网上下载了一个资料包,at91lib_softpack_1.5,,这些资料可以用来做什么呢?readme内容如下: //-------------------------------------- ...… 查看全部问答> |
|
串口程序能接收,但是发送的话只能发送一次.第二次就发不了,必须重启之后才能发送. write函数返回的值一直都是正常的. 但是串口监控软件就是接收不到数据,只能接收第一次的数据. 是因为我的驱动有问题吗? 驱动是用的vxworks自带的,我没动过.… 查看全部问答> |




