- 积分
- 588
- 在线时间
- 762 小时
- 最后登录
- 2022-2-20
- 阅读权限
- 50
- 精华
- 3
 
- UID
- 12668
- 帖子
- 320
- 精华
- 3
- 经验
- 588 点
- 金钱
- 325 ¥
- 注册时间
- 2006-9-24
|

楼主 |
发表于 2014-11-14 15:41
|
显示全部楼层
程序也一起贴出,如下:
RETURN_READ_TOC BIT 20H.2
;KEY EQU P1
AUXR EQU 8EH
READ_TOC_RAM EQU 37h
ZHUAN_HUAN_1 EQU 3AH
ZHUAN_HUAN_2 EQU 3BH
ZHUAN_HUAN_3 EQU 3CH
ZHUAN_HUAN_4 EQU 3DH
VFD_RAM1 EQU 40H
VFD_RAM2 EQU 41H
VFD_RAM3 EQU 42H
VFD_RAM4 EQU 43H
VFD_RAM5 EQU 44H
VFD_RAM6 EQU 45H
VFD_RAM7 EQU 46H
VFD_RAM8 EQU 47H
VFD_RAM9 EQU 48H
I2C_SCL BIT P1.1
I2C_SDATA BIT P1.2
I2C_CRC BIT P1.3
CD_IN BIT P2.5
CD_RESET BIT P1.5
VFD_STB BIT P0.0
VFD_CLK BIT P0.1
VFD_DATA BIT P0.2
I2C_STRING_DATA EQU 50H
TRACK EQU 56H
FEN_ZHONG EQU 58H
MIAO EQU 59H
KEY_1 BIT P2.0
KEY_2 BIT P2.1
KEY_3 BIT P2.2
KEY_4 BIT P2.3
KEY_5 BIT P2.4
KEY_7 BIT P2.6
KEY_8 BIT P2.7
RAM_1 EQU 60H
RAM_2 EQU 61H
RAM_3 EQU 62H
RAM_4 EQU 63H
RAM_5 EQU 64H
RAM_6 EQU 65H
RAM_7 EQU 66H
RAM_8 EQU 67H
RAM_9 EQU 68H
RAM_10 EQU 69H
RAM_11 EQU 6AH
RAM_12 EQU 6BH
RAM_13 EQU 6CH
RAM_14 EQU 6DH
LOGO_RAM EQU 6EH
LOGO_RAM1 EQU 6FH
TRACK_RAM_1 EQU 70H
TRACK_RAM_2 EQU 71H
TRACK_RAM_3 EQU 72H
TRACK_RAM_4 EQU 73H
TRACK_RAM_5 EQU 74H
TRACK_RAM_6 EQU 75H
TRACK_RAM_7 EQU 76H
TRACK_RAM_8 EQU 77H
TRACK_RAM_9 EQU 78H
TRACK_RAM_10 EQU 79H
TRACK_RAM_11 EQU 7AH
TRACK_RAM_12 EQU 7BH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP TIMER0_INT
ORG 0023H
LJMP ZHIJI
org 0100h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN:
lcall DELAY100MS
MOV P1,#0FFH
LCALL VFD_DISP_TEST
lcall UART_SETUP
LCALL TIMER0INIT
MOV LOGO_RAM,#80H
MOV LOGO_RAM1,#06H
SETB CD_RESET
SETB I2C_SCL
SETB I2C_SDATA
SETB I2C_CRC
lcall DELAY100MS
CLR CD_RESET
lcall DELAY100MS
SETB CD_RESET
lcall DELAY100MS
lcall DELAY100MS
MOV 50H,#02H
MOV SP,#90H
LCALL CD_SEVER
lcall DELAY100MS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JB CD_IN,main_1
LCALL RETURN_TOC_SETUP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
main_1:
JNB I2C_CRC,$
JB I2C_CRC,$
LCALL KEY_CONTROL
LCALL DELAY4MS
CLR EA
LCALL RXD_DATA
LCALL RETURN_TOC_READ
LCALL DATA_PRO
SETB EA
NOT_DATA:
JMP main_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RETURN_TOC_READ:
MOV A,53H
CJNE A,#04H,NULL_RETURN
MOV A,54H
CJNE A,#40H,NULL_RETURN
MOV A,56H
CJNE A,#0F8H,NULL_RETURN
MOV A,57H
CJNE A,#6AH,NULL_RETURN
LCALL RETURN_TOC_SETUP
NULL_RETURN:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RETURN_TOC_SETUP:
LCALL READ_CD_TOC
mov 35h,#120
qwer:
lcall DELAY4MS
lcall DELAY4MS
lcall DELAY4MS
lcall DELAY32MS
LCALL RXD_DATA
LCALL DATA_PRO_2
djnz 35h,qwer
LCALL TOC_READ_TRACK
lcall DELAY100MS
lcall DELAY100MS
LCALL CD_play
lcall DELAY100MS
lcall DELAY100MS
LCALL CD_play
lcall DELAY100MS
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIMER0_INT:
CLR TF0
CLR TR0
CLR EA
PUSH ACC
MOV TL0,#09AH ;设置定时初值
MOV TH0,#019H
LCALL KEY_CONTROL
ERROR_DISP_STOP:
POP ACC
SETB TR0
SETB EA
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIMER0INIT: ;64毫秒@11.0592MHz
ANL AUXR,#7FH ;定时器时钟12T模式
ANL TMOD,#0F0H ;设置定时器模式
ORL TMOD,#01H ;设置定时器模式
MOV TL0,#09AH ;设置定时初值
MOV TH0,#019H ;设置定时初值
CLR TF0 ;清除TF0标志
SETB TR0;定时器0开始计时
SETB ET0
RET
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
VFD_DISP_TEST:
CLR VFD_STB
MOV A,#05H ;显示模式设置
ACALL TO_VFD
SETB VFD_STB;;;;;;;;;;;;;;
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,#01000100B ;数据设置:正常模式--增量地址--写显示
CLR VFD_STB
ACALL TO_VFD ;sent data to vfd
SETB VFD_STB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCALL MY_LOGO
MOV A,#88H ;开显示器亮度14/16;8FH开显示器,,,,87H关显示
CLR VFD_STB
LCALL TO_VFD
SETB VFD_STB
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
VFD_DISP:
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C0h ;显示地址
LCALL TO_VFD
NOP
MOV A,LOGO_RAM
MOV A,LOGO_RAM;显示数据
RL A
MOV LOGO_RAM,A
DJNZ LOGO_RAM1,LLB
MOV LOGO_RAM,#80H
MOV LOGO_RAM1,#06H
LLB:
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C6h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#01000000B;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CCh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#01000000B;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;秒转换程序
MOV ZHUAN_HUAN_1,MIAO
ANL ZHUAN_HUAN_1,#0FH
CLR VFD_STB
MOV A,#0D0h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,ZHUAN_HUAN_1;56H地址里面是CD机芯的曲目数据
LCALL DISP_TABLE
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
MOV ZHUAN_HUAN_1,MIAO
ANL ZHUAN_HUAN_1,#0F0H
MOV A,ZHUAN_HUAN_1
SWAP A
MOV ZHUAN_HUAN_1,A
CLR VFD_STB
MOV A,#0CEh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,ZHUAN_HUAN_1;56H地址里面是CD机芯的曲目数据
LCALL DISP_TABLE
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;分钟转换程序
MOV ZHUAN_HUAN_2,FEN_ZHONG
ANL ZHUAN_HUAN_2,#0FH
CLR VFD_STB
MOV A,#0CAh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,ZHUAN_HUAN_2;56H地址里面是CD机芯的曲目数据
LCALL DISP_TABLE
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
MOV ZHUAN_HUAN_2,FEN_ZHONG
ANL ZHUAN_HUAN_2,#0F0H
MOV A,ZHUAN_HUAN_2
SWAP A
MOV ZHUAN_HUAN_2,A
CLR VFD_STB
MOV A,#0C8h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,ZHUAN_HUAN_2;56H地址里面是CD机芯的曲目数据
LCALL DISP_TABLE
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;曲目转换程序
MOV ZHUAN_HUAN_3,TRACK
ANL ZHUAN_HUAN_3,#0FH
CLR VFD_STB
MOV A,#0C4h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,ZHUAN_HUAN_3;56H地址里面是CD机芯的曲目数据
LCALL DISP_TABLE
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
MOV ZHUAN_HUAN_3,TRACK
ANL ZHUAN_HUAN_3,#0F0H
MOV A,ZHUAN_HUAN_3
SWAP A
MOV ZHUAN_HUAN_3,A
CLR VFD_STB
MOV A,#0C2h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,ZHUAN_HUAN_3;56H地址里面是CD机芯的曲目数据
LCALL DISP_TABLE
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,#88H ;开显示器亮度1/16;8FH开显示器,,,,87H关显示
CLR VFD_STB
LCALL TO_VFD
SETB VFD_STB
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TO_VFD:MOV R6,#8
TOLOOP:CLR VFD_CLK
LCALL I2C_DELAY_10uS
RRC A
MOV VFD_DATA,C ;sent data to vfd
LCALL I2C_DELAY_10uS
SETB VFD_CLK
LCALL I2C_DELAY_10uS
DJNZ R6,TOLOOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISP_TABLE:
mov dptr,#tab
movc a,@a+dptr
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
XX_COMMAND:
LCALL I2C_BUS_START
MOV I2C_STRING_DATA,#30H;;;;;地址是30
LCALL SEND
LCALL CACK
MOV I2C_STRING_DATA,#89H;;;;;地址是88
LCALL SEND
LCALL CACK
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_BUS_STOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CD_PLAY:
;;;;从第一首播放
LCALL I2C_BUS_START
MOV I2C_STRING_DATA,#30H;;;;;地址是30
LCALL SEND
LCALL CACK
MOV I2C_STRING_DATA,#13H;;;;;地址是88
LCALL SEND
LCALL CACK
MOV I2C_STRING_DATA,#01H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_BUS_STOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;
CD_STOP:
;进碟停止30+11
LCALL I2C_BUS_START
MOV I2C_STRING_DATA,#30H;;;;;地址是30
LCALL SEND
LCALL CACK
MOV I2C_STRING_DATA,#11H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_BUS_STOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;
CD_NEXT:
;;;下一首
LCALL I2C_BUS_START
MOV I2C_STRING_DATA,#30H;;;;;地址是30
LCALL SEND
LCALL CACK
MOV I2C_STRING_DATA,#16H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_BUS_STOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;
CD_SHUAN_YI_SHOU:
;;;上一首
LCALL I2C_BUS_START
MOV I2C_STRING_DATA,#30H;;;;;地址是30
LCALL SEND
LCALL CACK
MOV I2C_STRING_DATA,#17H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_BUS_STOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;
CD_OPEN:
;;;;;出碟30H+10H
LCALL I2C_BUS_START
MOV I2C_STRING_DATA,#30H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#10H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
LCALL I2C_BUS_STOP
RET
READ_CD_TOC:
LCALL I2C_BUS_START
MOV I2C_STRING_DATA,#30H;;;;;地址是30
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#23H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
LCALL I2C_BUS_STOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RXD_DATA:
NOP
NOP
MOV 53H,#00H
MOV 54H,#00H
MOV 55H,#00H
MOV 56H,#00H
MOV 57H,#00H
MOV 58H,#00H
MOV 59H,#00H
MOV 5AH,#00H
MOV 5BH,#00H
MOV 5CH,#00H
MOV 5DH,#00H
MOV 5EH,#00H
LCALL I2C_BUS_START
MOV I2C_STRING_DATA,#31H
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
LCALL I2C_DELAY_10uS
LCALL I2C_RXBBYTE
LCALL I2C_TXACK
MOV 53H,A
MOV A,#0FFH
XRL A,53H
JZ MNMN
MOV R0,#54H
MOV R5,53H
GLK:
LCALL I2C_DELAY_10uS
LCALL I2C_DELAY_10uS
LCALL I2C_RXBBYTE
LCALL I2C_TXACK
MOV @R0,A
INC R0
DJNZ R5,GLK
MNMN:
LCALL I2C_BUS_STOP
RET
;;;;;;;;;;;;;;;;;;;;;;;
DATA_PRO_2:
MOV R3,53H
CJNE R3,#0CH,RETURN_2
MOV R3,54H
CJNE R3,#4FH,RETURN_2
MOV A,57H
JZ RETURN_2
MOV TRACK_RAM_1,A
LCALL UART_TXDATA
LCALL TOC_READ_TRACK
RETURN_2:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATA_PRO:
MOV R3,53H
CJNE R3,#0CH,DDFG
LCALL UART_TXDATA
LCALL VFD_DISP
;;;;;;;;;;;;;;;;;;;;;;;;;;;
DDFG:
MOV R3,53H
CJNE R3,#03H,SASD
LCALL UART_TXDATA
SASD:
MOV R3,53H
CJNE R3,#04H,VCC
LCALL UART_TXDATA
VCC:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STOP_END:
MOV A,53H
CJNE A,#03H,RETU
MOV A,54H
CJNE A,#4CH,RETU
MOV A,55H
CJNE A,#00H,RETU
MOV A,56H
CJNE A,#4CH,RETU
LCALL CD_STOP
lcall DELAY100MS
LCALL CD_STOP
lcall DELAY100MS
LCALL CD_STOP
LCALL MY_LOGO
RETU:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
UART_TXDATA:
CLR ES
CLR TI
MOV A,53H;;曲目
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,54H;默认字节
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,55;默认字节
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,56H;分钟
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,57H;秒
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,58H;秒
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,59H;秒
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,5AH;秒
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,5BH;秒
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,5CH;秒
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,5DH;秒
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,5EH;秒
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,TRACK_RAM_1;秒
MOV SBUF,A
JNB TI,$
CLR TI
SETB ES
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
UART_SETUP:;;;;;串口初始化
MOV PCON,#00H
MOV SCON,#50H
MOV TMOD,#21H ;TIM1在模式2 TIM0在模式1
MOV TH1,#0FdH ;设置定时时间
SETB TR1 ;启动定时器1
SETB ES ;允许串口中断
SETB EA ;允许总中断
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以下是I2C总线全部的程序
I2C_BUS_START:
lcall I2C_DELAY_10uS
CLR I2C_SDATA
NOP
NOP
NOP
CLR I2C_SCL
NOP
NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
I2C_BUS_STOP:
CLR I2C_SDATA
SETB I2C_SCL
NOP
NOP
NOP
SETB I2C_SDATA
NOP
NOP
lcall I2C_DELAY_10uS
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
I2C_RXBBYTE:
MOV R2,#8
RX_NEXT:
SETB I2C_SCL
JNB I2C_SCL,$
NOP
NOP
MOV C,I2C_SDATA
RLC A
CLR I2C_SCL
NOP
NOP
DJNZ R2,RX_NEXT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
I2C_TXACK:
CLR I2C_SDATA
SETB I2C_SCL
NOP
NOP
CLR I2C_SCL
NOP
NOP
SETB I2C_SDATA
NOP
NOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cack:
RXACK:
SETB I2C_SDATA
SETB I2C_SCL
NOP
NOP
MOV C,I2C_SDATA
NOP
NOP
CLR I2C_SCL
NOP
NOP
JnC CEND
LCALL TDA7313_error
CEND:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
SEND:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR I2C_SCL
MOV R2,#8
MOV A,I2C_STRING_DATA
TX_NEXT:
RLC A
MOV I2C_SDATA,C
nop
SETB I2C_SCL
JNB I2C_SCL,$
nop
CLR I2C_SCL
nop
DJNZ R2,TX_NEXT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TDA7313_error:
lcall DELAY100MS
lcall DELAY100MS
JMP TDA7313_error
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;I2C总线程序结束
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
I2C_DELAY_10uS:
MOV R7,#50
VB:
DJNZ R7,VB
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY32MS: ;@11.0592MHz
NOP
PUSH 30H
PUSH 31H
MOV 30H,#58
MOV 31H,#87
NEXT32:
DJNZ 31H,NEXT32
DJNZ 30H,NEXT32
POP 31H
POP 30H
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY100MS: ;@11.0592MHz
PUSH 30H
PUSH 31H
MOV 30H,#180
MOV 31H,#68
NEXT:
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 31H
POP 30H
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY4MS: ;@11.0592MHz
NOP
NOP
PUSH 30H
PUSH 31H
MOV 30H,#35
MOV 31H,#102
NEXT4ms:
DJNZ 31H,NEXT4ms
DJNZ 30H,NEXT4ms
POP 31H
POP 30H
RET
ZHIJI:
PUSH ACC
PUSH PSW
CLR ES ;关闭串行口中断
MOV TH0,#HIGH(65536-65536)
MOV TL0,#LOW(65536-65536)
SETB TR0 ;开定时器0
MOV 0E7H,#60H
FS: CLR TR0 ;关定时器0
;********************************
SETB ES ;开串行口中断
POP PSW
POP ACC
RETI;中断子程序返回
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;模拟CD私服反发送
CD_SEVER:
LCALL I2C_BUS_START
MOV I2C_STRING_DATA,#30H;;;;;地址是30
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#3CH;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#30H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#22H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#14H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV I2C_STRING_DATA,#08H;;;;;地址是30
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#0A0H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#1CH;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV I2C_STRING_DATA,#0CH;;;;;地址是30
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#1EH;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#0CH;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV I2C_STRING_DATA,#00H;;;;;地址是30
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#03H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#20H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV I2C_STRING_DATA,#00H;;;;;地址是30
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#80H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV I2C_STRING_DATA,#00H;;;;;地址是30
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
MOV I2C_STRING_DATA,#00H;;;;;地址是88
LCALL SEND
LCALL CACK
LCALL I2C_DELAY_10uS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCALL I2C_BUS_STOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HEN_HEN_DISP:
CLR VFD_STB
MOV A,#0C0h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C2h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C4h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C6h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C8H ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CAh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CCh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CEh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0D0h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MY_LOGO:
CLR VFD_STB
MOV A,#0C0h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#00H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C2h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#39H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C4h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#3FH;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C6h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C8h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#73H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CAh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#38H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CCh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#77H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CEh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#6EH;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0D0h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#00H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY_CONTROL:
JB KEY_1,kkkk
LCALL CD_OPEN
lcall DELAY100MS
LCALL HEN_HEN_DISP
LCALL RXD_DATA
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
kkkk:
JB KEY_2,kkkkk;
LCALL CD_STOP
lcall DELAY100MS
LCALL HEN_HEN_DISP
LCALL RXD_DATA
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
kkkkk:
JB KEY_3,kkkkk1;
LCALL CD_PLAY
lcall DELAY100MS
LCALL HEN_HEN_DISP
LCALL RXD_DATA
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
kkkkk1:
JB KEY_4,kkkkk4;;;;;;;;;;;;;
LCALL CD_NEXT
lcall DELAY100MS
LCALL HEN_HEN_DISP
LCALL RXD_DATA
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
kkkkk4:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JB KEY_5,QWE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCALL CD_SHUAN_YI_SHOU
lcall DELAY100MS
LCALL HEN_HEN_DISP
LCALL RXD_DATA
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
lcall DELAY100MS
QWE:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
QWE_2:
JB KEY_7,BB
JNB KEY_7,$
BB:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JB KEY_8,FF_2
JNB KEY_8,$
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FF_2:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TOC_READ_TRACK:
CLR VFD_STB
MOV A,#0C0h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
MOV ZHUAN_HUAN_3,TRACK_RAM_1
ANL ZHUAN_HUAN_3,#0FH
CLR VFD_STB
MOV A,#0C4h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,ZHUAN_HUAN_3;56H地址里面是CD机芯的曲目数据
LCALL DISP_TABLE
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
MOV ZHUAN_HUAN_3,TRACK_RAM_1
ANL ZHUAN_HUAN_3,#0F0H
MOV A,ZHUAN_HUAN_3
SWAP A
MOV ZHUAN_HUAN_3,A
CLR VFD_STB
MOV A,#0C2h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,ZHUAN_HUAN_3;56H地址里面是CD机芯的曲目数据
LCALL DISP_TABLE
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C6h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0C8H ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CAh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CCh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0CEh ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
NOP
;;;;;;;;;;;;;;;;;;;;;;;
CLR VFD_STB
MOV A,#0D0h ;显示地址
LCALL TO_VFD
NOP
NOP
MOV A,#40H;显示数据
LCALL TO_VFD
NOP
SETB VFD_STB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,#89H ;开显示器亮度14/16;89H开显示器,,,,87H关显示
CLR VFD_STB
LCALL TO_VFD
SETB VFD_STB
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TAB:db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,3FH,3FH,3FH,3FH,3FH
;;;;;;;;;0;;;1;;;2;;;3;;;4;;;5;;;6;;;7;;;8;;;9
end |
评分
-
查看全部评分
|