📄 demo_6961.asm
字号:
;.symbols
;==============================================
pt6312_dout bit p3.1 ;set pt6312 dout pin
pt6312_din bit p3.1 ;set pt6312 din pin
pt6312_clk bit p3.4 ;set pt6312 clk pin
pt6312_stb bit p3.3 ;set pt6312 stb pin
;sbit PIN_6961_DI = P3^1;
;sbit PIN_6961_DO = P3^1;
;sbit PIN_6961_STB = P3^3;
;sbit PIN_6961_CLK = P3^4;
srs_flag bit 20h.0
ubs_flag bit 20h.1
pgm_flag bit 20h.2
ran_flag bit 20h.3
rpt_flag bit 20h.4
rock_flag bit 20h.5
jazz_flag bit 20h.6
am_flag bit 20h.7
clas_flag bit 21h.0
hall_flag bit 21h.1
vol_flag bit 21h.2
l_flag bit 21h.3
k1_flag bit 21h.4
k2_flag bit 21h.5
k3_flag bit 21h.6
khz_flag bit 21h.7
play_flag bit 22h.0
mhz_flag bit 22h.1
sg11_flag bit 22h.2
pt_flag bit 22h.3
onoff_flag bit 22h.4
dim_flag equ 31h
pt6312_buf equ 32h ;set pt6312 patern buffer
key_number equ 33h ;set key number buffer
shift_buf equ 34h ;set patern shift times buffer
first_key equ 35h ;read first key buffer
repeat_key equ 36h ;read repeat key buffer
adr_buf equ 37h
data_buf equ 38h
d1_q70 equ 24h ;set pt6312 display ram
d2_q70 equ 39h
d3_q70 equ 26h
d4_q70 equ 28h
d1_qf8 equ 23h
d2_qf8 equ 25h
d3_qf8 equ 27h
d4_qf8 equ 29h
d5_q70 equ 2ah
d6_q70 equ 2bh
d7_q70 equ 2ch
d5_qf8 equ 2dh
d6_qf8 equ 2eh
d7_qf8 equ 2fh
time_count equ 43h
time_hour_10 equ 44h
time_hour equ 45h
time_min_10 equ 46h
time_min equ 47h
time_sec_10 equ 48h
time_sec equ 49h
;==============================================
org 00h
jmp start
;org 0bh
;jmp timer0
;org 1bh
;jmp timer1
start:
mov sp,#60h
mov pt6312_buf,#0
mov key_number,#0
mov shift_buf,#0
mov first_key,#0ffh
mov repeat_key,#0ffh
mov adr_buf,#0
mov data_buf,#0
mov time_count,#0
mov time_hour_10,#0
mov time_hour,#0
mov time_min_10,#0
mov time_min,#0
mov time_sec_10,#0
mov time_sec,#0
mov dim_flag,#7
mov d1_qf8,#0fbh
mov d2_qf8,#0fbh
mov d3_qf8,#0fbh
mov d4_qf8,#0fah
mov d5_qf8,#0fah
mov d6_qf8,#0fbh
mov d7_qf8,#0fbh
setb srs_flag
setb ubs_flag
setb pgm_flag
setb ran_flag
setb rpt_flag
setb rock_flag
setb jazz_flag
setb clas_flag
setb hall_flag
setb vol_flag
setb l_flag
setb k1_flag
setb k2_flag
setb k3_flag
setb khz_flag
clr mhz_flag
clr sg11_flag
clr pt_flag
clr onoff_flag
clr play_flag
setb am_flag
setb pt6312_dout
setb pt6312_din
setb pt6312_clk
setb pt6312_stb
; mov tmod,#00010001b
; mov ie,#10001010b
call strobe_set
mov pt6312_buf,#03h
call pt6312_pat
call strobe_set
mov pt6312_buf,#8fh
call pt6312_pat
call clr_6312_ram
call clr_6312_ram
; mov th1,#56;60536 ;>(65536-5000)
; mov tl1,#56;60536 ;<(65536-5000)
setb tr1
call setb_6312_ram
call load_delay
call load
call clr_6312_ram
;call on
call strobe_set
mov pt6312_buf,#8fh
call pt6312_pat
call load_delay
main_loop:
call read_key
mov a,key_number
cjne a,#0,have_key
jnb play_flag,main_1
jb onoff_flag,main_1
call time_show
call show_disp
call strobe_set
mov pt6312_buf,#03h
call pt6312_pat
call strobe_set
; call load
; mov pt6312_buf,#8fh
; call pt6312_pat
main_1:
jmp main_loop
;-----------------------------------------------------------
have_key:
cjne a,#3,key3
call time_show
call get_key
mov key_number,#0
call dn_delay
jmp main_loop
mov a,first_key
cjne a,key_number,key2
key3:
cjne a,#4,key4
call time_show
call get_key
mov key_number,#0
call dn_delay
jmp main_loop
mov a,first_key
cjne a,key_number,key2
key4:
mov a,repeat_key
cjne a,key_number,key1
key:
jb onoff_flag,keya
jnb play_flag,keya
call time_show
call show_disp
keya:
call read_key
mov a,key_number
cjne a,#0,key
mov key_number,#0
mov first_key,#0ffh
mov repeat_key,#0ffh
jmp main_loop
key1:
mov a,first_key
cjne a,key_number,key2
mov repeat_key,key_number
jmp main_loop
key2:
call get_key
mov first_key,key_number
mov key_number,#0
jmp main_loop
;================================================================
strobe_set:
setb pt6312_stb
;call stb_delay
clr pt6312_stb
ret
;================================================================
pt6312_pat:
clr c
clr a
mov a,pt6312_buf
mov shift_buf,#8
pat_1:
rrc a
jc pat_2
clr pt6312_din
call pulse
djnz shift_buf,pat_1
jmp pat_3
pat_2:
setb pt6312_din
call pulse
djnz shift_buf,pat_1
pat_3:
ret
;================================================================
pulse:
clr pt6312_clk
call stb_delay
setb pt6312_clk
call stb_delay
clr pt6312_clk
call stb_delay
ret
;================================================================
stb_delay: ;delay=2+1+2=5us
mov r7,#1 ;2us
delay:
nop ;1us
djnz r7,delay ;2us
ret
;================================================================
adr_da_set:
call strobe_set
mov pt6312_buf,#44h
call pt6312_pat
call strobe_set
mov pt6312_buf,adr_buf ;address set
call pt6312_pat
mov pt6312_buf,data_buf ;data set
call pt6312_pat
ret
;================================================================
load:
;mov r1,#4
;load1:
call strobe_set
mov pt6312_buf,#44h
call pt6312_pat
mov adr_buf,#0c0h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c2h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c4h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c6h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c8h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0cah
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0cch
mov data_buf,#0ffh
call adr_da_set
call load_delay
call clr_6312_ram
call load_delay
call strobe_set
mov pt6312_buf,#8fh
call pt6312_pat
;djnz r1,load1
ret
;================================================================
load_delay: ;load_delay 605ms
mov r2,#12
l1:
mov r3,#100
l2:
mov r4,#100
l3:
nop
nop
djnz r4,l3
djnz r3,l2
djnz r2,l1
ret
;================================================================
dn_delay: ;load_delay 303ms
;mov r2,#6
;d1:
mov r3,#10
d2:
mov r4,#10
d3:
nop
nop
call time_show
djnz r4,d3
djnz r3,d2
; djnz r2,d1
ret
;----------------------------------------------------------------------------------------------------------------
on:
call strobe_set
mov pt6312_buf,#44h
call pt6312_pat
mov adr_buf,#0c0h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c1h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c2h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c3h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c4h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c5h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c6h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c7h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c8h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0c9h
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0cah
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0cbh
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0cch
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0cdh
mov data_buf,#0ffh
call adr_da_set
mov adr_buf,#0ceh
mov data_buf,#0ffh
call adr_da_set
ret
;================================================================
clr_6312_ram:
call strobe_set
mov pt6312_buf,#40h ;write data display mode
call pt6312_pat
call strobe_set
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -