📄 9300.asm
字号:
SDA BIT P3.4
SDAAT BIT P3.4
SCLAT BIT P3.3
SCL BIT P3.3
DATA_RD_TUNER BIT P1.0
CL_TUNER BIT P1.1
DATA_WR_TUNER BIT P1.2
CE_TUNER BIT P1.3
T_SCL BIT P1.7
T_SDA BIT P1.5
CD94_DAT1 BIT P1.4
CD94_CLK1 BIT P1.6
CD94_DAT2 BIT P3.0
http://www.youku.com/playlist_show/id_899823_ascending_1_page_2.html
CD94_CLK2 BIT P3.1
CD94_DAT3 BIT P3.7
CD94_CLK3 BIT P3.6
MIC_OUT BIT P3.5
USB_HOLD BIT P2.0
USB_DA BIT P2.1
USB_BCK BIT P2.2
CSA BIT P2.3
CSB BIT P2.4
RS BIT P2.5
RW BIT P2.6
E1 BIT P2.7
DATBUS EQU P0
;///////////////////////////////////////
ACK BIT 22H.0
AM_FM_FLAG BIT 22H.1
IF_CTR BIT 22H.2
SLA DATA 23H
FLAG EQU 28H
YEAR DATA 36H ;年
MONTH DATA 35H ;月
DAY DATA 34H ;日
WEEK DATA 33H ;星期
HOUR DATA 32H ;小时
MINUTE DATA 31H ;分钟
SECOND DATA 30H ;秒
TIMETEMP DATA 29H ;时间数据缓存器
TIMETX DATA 38H ;时间数据发送寄存器
TIMERX DATA 39H ;时间数据接收寄存器
IICTEMP DATA 3AH ;IIC标志寄存器
SLAVE_ADD DATA 3BH ;SD7218地址寄存器
DATAI1 DATA 3CH
DATAI2 DATA 3DH
TXBUF DATA 3EH ;IIC数据发送寄存器
RXBUF DATA 3FH ;IIC数据接收寄存器
KEYBUF DATA 40H ;键盘数据缓冲器
READDATA DATA 41H
SRAMADD_LO DATA 42H ;SRAM地址低8位
SRAMADD_HI DATA 43H ;SRAM地址高8位
SRAMDATA DATA 44H ;写入SRAM内的数据
VERIFY_LO DATA 45H ;校验次数低八位
VERIFY_HI DATA 46H ;校验次数高八位
TYPE DATA 47H ;sd2400型号寄存器
EE_PAGE DATA 48H
TEMP DATA 49H ;
CON_REG2 DATA 4AH ;sd2400的控制寄存器
VAL_CON_REG2_12 DATA 4BH ;12H
VAL_CON_REG2_24 DATA 4CH ;24H
COM DATA 4DH
XPAGE DATA 4EH
DAT DATA 4FH
;///////////////////////////
DAT1 DATA 50H ; 数据寄存器
O_XL DATA 51H ; 列地址(0-127)
O_YL DATA 52H ; 行地址 D2,D1,D0: ; D7为点标志 "1"为置点,"0"为清点
CODE1 DATA 53H ; 字符代码寄存器
COUNT1 DATA 54H
CONT0 DATA 55H
TAB_KEY DATA 60H
;--------------------------------------------------------------------------
;define time device address
sd2400_R EQU 65H ;sd2400的器件地址(读)
sd2400_W EQU 64H ;sd2400的器件地址(写)
;////////////////////////////////////// FM AND AM SET
IN1_DATA1 DATA 56H
IN1_DATA2 DATA 57H
IN1_DATA3 DATA 58H
IN2_DATA1 DATA 59H
IN2_DATA2 DATA 5AH
IN2_DATA3 DATA 5BH
out_data1 DATA 5CH
out_data2 DATA 5DH
out_data3 DATA 5EH
USB_DATA DATA 5FH
;/////////////////////////////////////////////
ORG 00H
AJMP MAIN
;/////////////////
ORG 03H
LJMP REM
;///////////////////
ORG 0BH
LJMP TIME
ORG 0030H
MAIN:
MOV SP,#60H
MOV P3,#21H
MOV PSW,#00H
MOV P0,#0F0H
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
CLR A ;开始初始化各寄存器
MOV IE,A ;关中断
MOV SP,#60H
SETB IP.0
MOV TMOD,#11H
CLR FLAG
MOV TAB_KEY,#0FFH ;清除标志位
MOV VERIFY_LO,#00H
LCALL LONGDELAY1
MOV SLA,#88H
MOV A,#0C0H
LCALL IWRBYTE
MOV A,#0E0H
LCALL IWRBYTE
MOV A,#5BH
LCALL IWRBYTE
LCALL INT
LCALL CLEAR
CLR MIC_OUT
; LCALL INIT_FM
LCALL DISCHA
SETB USB_HOLD
SETB USB_DA
SETB USB_BCK
SETB EA
SETB TR0
SETB IT0
SETB EX0
setb TF0
SETB ET0
SETB EA
MAIN_1:
LCALL KEYSCN
MOV A,TAB_KEY
CJNE A,#0FFH,MAIN_2
JMP MAIN_1
MAIN_2:
MOV A,TAB_KEY
MOV B,#2
MUL AB
NOP
MOV TAB_KEY,#0FFH
MOV DPTR,#TAB_JMP
NOP
NOP
JMP @A+DPTR
TAB_JMP:
AJMP MAIN_1
AJMP AUTO
AJMP SHOUDONG
AJMP MIC
AJMP OUT1
AJMP OUT2
AJMP OUT3
AJMP OUT4
AJMP USB
AJMP FM
AJMP AUX1
AJMP AUX2
AJMP AUTO_FM
AJMP PREV
AJMP MP3_STOP
AJMP NEXT
AJMP UP
AJMP DN
AJMP MEU
AJMP TOP
AJMP BOT
AJMP LEFT
AJMP RFFT
AJMP RETUN
AJMP DEL
;///////////////////////
AUTO:
LJMP MAIN_1
SHOUDONG:
LJMP MAIN_1
MIC:
CPL MIC_OUT
LJMP MAIN_1
OUT1:
LJMP MAIN_1
OUT2:
LJMP MAIN_1
OUT3:
LJMP MAIN_1
OUT4:
LJMP MAIN_1
USB:
MOV A,#5BH
LCALL IWRBYTE
LJMP MAIN_1
FM:
MOV A,#5AH
LCALL IWRBYTE
LJMP MAIN_1
AUX1:
MOV A,#58H
LCALL IWRBYTE
LJMP MAIN_1
AUX2:
MOV A,#59H
LCALL IWRBYTE
LJMP MAIN_1
AUTO_FM:
LJMP MAIN_1
PREV:
LJMP MAIN_1
MP3_STOP:
MOV USB_DATA,#0E6H
LCALL USB_STOP
MOV USB_DATA,#19H
LCALL USB_STOP
MOV USB_DATA,#0FFH
LCALL USB_STOP
MOV USB_DATA,#00H
LCALL USB_STOP
LJMP MAIN_1
NEXT:
LJMP MAIN_1
UP:
LJMP MAIN_1
DN:
LJMP MAIN_1
MEU:
LJMP MAIN_1
TOP:
LJMP MAIN_1
BOT:
LJMP MAIN_1
LEFT:
LJMP MAIN_1
RFFT:
LJMP MAIN_1
RETUN:
LJMP MAIN_1
DEL:
LJMP MAIN_1
;/////////////////////
USB_STOP: ;发送方式
MOV R2,#8
MOV A,USB_DATA
USB_WLP:
RLC A
JC USB_WR0 ;判断数据位
JMP USB_WR1
USB_LP1:
DJNZ R2,USB_WLP
NOP
NOP
JB USB_BCK,$
NOP
SETB USB_DA
SETB USB_HOLD
RET
USB_WR1: ;发送0
CLR USB_HOLD
NOP
NOP
NOP
JNB USB_BCK,USB_STOP
NOP
NOP
NOP
NOP
CPL USB_DA
NOP
NOP
NOP
NOP
SETB USB_HOLD
NOP
NOP
NOP
JMP USB_LP1
USB_WR0: ;发送1
CLR USB_HOLD
NOP
NOP
NOP
NOP
JB USB_BCK,USB_WR0
NOP
NOP
NOP
CLR USB_DA
NOP
NOP
NOP
SETB USB_HOLD
NOP
NOP
NOP
JMP USB_LP1
INT:
MOV COM,#0C0H ; 设置显示起始行为第一行
LCALL PR1
LCALL PR4
MOV COM,#3FH ; 开显示设置
LCALL PR1
LCALL PR4
RET
CLEAR:
MOV R4,#00H ; 页面地址暂存器设置
CLEAR1: MOV A,R4
ORL A,#0B8H ; "或"页面地址设置代码
MOV COM,A ; 页面地址设置
LCALL PR1
LCALL PR4
MOV COM,#40H ; 列地址设置为"0"
NOP
NOP
NOP
NOP
LCALL PR1
LCALL PR4
MOV R3,#40H ; 一页清64个字节
CLEAR2: MOV DAT1,#00H ; 显示数据为"0"
LCALL PR2
LCALL PR5
NOP
NOP
DJNZ R3,CLEAR2 ; 页内字节清零循环
INC R4 ; 页地址暂存器加1
NOP
NOP
NOP
NOP
CJNE R4,#08H,CLEAR1 ; RAM 区清零循环
RET
PR1: CLR CSB ; 片选设置为"01"
SETB CSA ;
CLR RS ; RS=0
SETB RW ; R/W=1
NOP
NOP
NOP
NOP
NOP
PR11: MOV DATBUS,#0FFH ; DATBUS口置"1"
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
NOP
MOV A,DATBUS ; 读状态字
CLR E1 ; E=0
JB ACC.7,PR11 ; 判"忙"标志为"0"否, 否再读
CLR RW ; R/W=0
MOV DATBUS,COM ; 写指令代码
NOP
NOP
NOP
NOP
NOP
NOP
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
CLR E1 ; E=0
NOP
NOP
NOP
RET
;/////////////////////////
PR2: CLR CSB ; 片选设置为"01"
SETB CSA ;
CLR RS ; RS=0
SETB RW ; R/W=1
PR21: MOV DATBUS,#0FFH ; DATBUS口置"1"
NOP
NOP
NOP
NOP
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
MOV A,DATBUS ; 读状态字
NOP
NOP
NOP
CLR E1 ; E=0
JB ACC.7,PR21 ; 判"忙"标志为"0"否, 否再读
SETB RS ; RS=1
CLR RW ; R/W=0
MOV DATBUS,DAT1 ; 写数据
NOP
NOP
NOP
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -