亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? es512.asm

?? isd voice record and playback code
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
;  Primary controls
$MOD51
$TITLE(ES512 control software)
$PAGEWIDTH(132)
$DEBUG
$OBJECT
$NOPAGING
;
;  Variable declarations
;

evm	equ	0
m224	equ	0		;1->224 messages, 0->96 messages
nrows equ	4		;number of rows per cluster (not yet checked for other values)

;5116 memory usage: depends on number of messages and number of rows per sector
;  each message requires 15 bytes for additional info plus 1 byte for sampling rate
;  the basic message map requires approximately 2048/nrows = 512 bytes = 2 rows of 2048 digital bits, minus the space required for the maps and information
;  to allow changes, a copy of each set is kept
; 
; for 96 messages:
;  msginfo = 16*96 = 1536 bytes = 6 rows of 2048 digital bits
;  2 rows for message map
;  2*8 rows = 16 rows of 2048 for data, first 2032 available for analog data (520 seconds)
;  base of information area, first copy, is top of array - 16. base of first copy of message map is top - 10. 2nd copies are at top-8 and top-2
; for 224 messages:
;  msginfo = 16*224 = 3584 bytes = 14 rows of 2048 digital bits
;  2 rows for message map
;  2*16 rows = 32 rows of 2048 for data, first 2016 available for analog data (516 seconds)
;  base of information area, first copy, is top of array - 32. base of first copy of message map is top - 18. 2nd copies are at top-16 and top-2
; top is 0x7ff row, 0xffe0 is first 8 byte scan of top row
; 

;Register usage, bank 0:
;R0 - pointer to databuf (8 byte chunk of message map)
;R1 - pointer to bitmap	(64 byte representation of active clusters, one bit per cluster)
;R2 - 508 code; keys
;R3	-	general loop counter
;R4	-	I2C byte loop counter
;R5 - 508 code; keys
;R6 - cluster count low byte
;R7 - cluster count high byte

if (evm)
SCL	BIT	P1.6
SDA	BIT	P1.5
;SCLIN	BIT	P1.6
;SDAIN	BIT	P1.5
SCLIN	BIT	P2.0
SDAIN	BIT	P2.1
else
SCL	BIT	P2.0
SDA	BIT	P2.1
SCLIN	BIT	P2.0
SDAIN	BIT	P2.1
endif
INT_	BIT	P2.2	;input
RAC	BIT	P3.3	;input
MIC	BIT	P2.4

SHDN_	BIT	P1.4
DIN	BIT	P1.5
DOUT	BIT	P1.6
LOBAT	BIT	P1.7	;input

ED	BIT	P3.0
RW	BIT	P3.1
DCLK	BIT	P3.2	;input (INT0)
RS	BIT	P2.3

EDbit	EQU	1
RWbit	EQU	2
DCLKbit	EQU	4
RACbit	EQU	8

KEYIN	EQU	00FH	;key input mask- port 1

NULL	EQU	0
WAIT	EQU	1
SETPLAY	EQU	0a9h	;requires addrh, addrl, sendlong
CPLAY		EQU	0a8h	;use sendshort
SETREC	EQU	091h	;requires addrh, addrl, sendlong
CREC		EQU	090h	;use sendshort
LDADDR	EQU	081h	;requires addrh, addrl, sendlong
DIGRD		EQU	0e1h	;requires addrh, addrl, readdigital
DIGWR		EQU	0c9h	;requires addrh, addrl, writedigital
DIGER		EQU	0d1h	;requires addrh, addrl, sendlong
SETCFG0	EQU	082h	;default is power on (bit 080h)
SETCFG1	EQU	083h	;default is power on (bit 080h)
STOP		EQU	080h	;leaves power on, use sendshort
STOPDIG	EQU	0C0h	;leaves power on, use sendshort, sets DAB
STOPPDN	EQU	000h	;turns power off, use sendshort
TPUD	EQU	100
PROMPT	EQU	0
QREC		EQU	12
MREC		EQU	2
IDLE	EQU	11
OFF		EQU	10
SCROLLUP	EQU 3
YES	EQU	15
SCROLLDN	EQU	9
POFF	EQU	14
PON	EQU	15
VOLSET	EQU	12
AUTOPD	EQU	02fh	;approx four minutes auto power down
TMRHI20	EQU	0b8h	;20ms @ 11.059MHz
TMRLO20	EQU	000h
;TMRHI20	EQU	0b1h	;20ms @ 12MHz
;TMRLO20	EQU	0e0h

if (m224)		;need last sixteen rows * 2. Base address is top-32, msgmap base is top-18
DATAMAPL	EQU 000h
DATAMAPH	EQU	0fch	;16 rows of array covers everything
MSGMAPL	EQU 0c0h		;last two rows of map block
MSGMAPH	EQU	0fdh
else				;need last eight rows * 2. Base address is top-16, msgmap base is top-10
DATAMAPL	EQU 000h
DATAMAPH	EQU	0feh	;8 rows of array covers everything
MSGMAPL	EQU 0c0h		;last two rows of map block
MSGMAPH	EQU	0feh
endif

TWEAKL	EQU	0e0h
TWEAKH	EQU	0fbh

KHZ8	EQU	000h
KHZ6	EQU	004h
KHZ5	EQU	008h
KHZ4	EQU	00Ch
blank	equ	0010h

TOP	equ	07fh

; should put this stuff within the first 40 locations allowing for special regs, R0-R7
	DSEG at 0008h
tptr1:		DS	1	;(R0 in second bank)		&&&
tptr2:		DS	1	;(R1 in second bank)		&&&
scans:		DS	1
temp1:		DS	1
temp2:		DS	1
dig3:			DS	0
status:		DS	1	;	&&&
cdl:			DS	1	;(R6 in second bank)
cdh:			DS	1	;(R7 in second bank)
timeout0:	DS	1
timeout1:	DS	1
command:	DS	1
priorkey:	DS	1
keycount:	DS	1
lastkey:	DS	1
keycode:	DS	1
keybuf:		DS	1
cfg:			DS	1
volume:		DS	1
samprate:	DS	1
dispctr:	DS	1
bits:			DS	1
dig1:			DS	0
datal:		DS	1
dig2:			DS	0
datah:		DS	1
msg:			DS	1
rmsg:			DS	1

	DSEG at 0021h	
altmapl:	DS	1
altmaph:	DS	1
addrh:		DS	1
addrl:		DS	1
flag1:		DS	1
flag2:		DS	1
flag3:		DS	1
databuf:	DS	8
bitmap:		DS	63
racs:			DS	1
stack:		DS	16

writeback	BIT	flag1.0
killit	BIT	flag1.1
taskactive	BIT	flag1.2
newkey	BIT	flag1.3
keyup		BIT	flag1.4
power		BIT	flag1.5
first		BIT	flag1.6
occupied	BIT	flag1.7

valid		BIT	flag2.0
empty		BIT flag2.1
recflag	BIT	flag2.2
stopflag	BIT	flag2.3
lastone	BIT	flag2.4
testx		BIT	flag2.5
noack		BIT	flag2.6
done		BIT	flag2.7

doit		BIT	flag3.0
freeform	BIT flag3.1
emptyrow	BIT	flag3.2
digit			BIT	flag3.3
ackerror	BIT	flag3.4
;	BIT	flag3.5
;	BIT	flag3.6
;	BIT	flag3.7

if (m224)
mapbit	BIT	altmaph.6
bumpadd	BIT	altmaph.7
else
mapbit	BIT	altmapl.6
bumpadd	BIT	altmapl.7
endif

trailer	equ	(bitmap + 15)


	CSEG
;
	ORG	0000H
	LJMP initialize

	ORG 0003H
ext0svc:
	push	PSW
	push	ACC
	ljmp	ext0svc1

	ORG 000BH
tmr0svc:
	push	PSW
	push	ACC
	ljmp	tmr0svc1

	ORG 0013H
ext1svc:
	push	PSW
	push	ACC
	ljmp	ext1svc1

	ORG 001BH
tmr1svc:
	push	PSW
	push	ACC
	ljmp	tmr1svc1

;	ORG 0030H
main:
	call poweroff
	call	enabledisplay
	call	readstatus
	call poweron
	call	readstatus
	mov	DPTR,#startstring
	call	prints
	call wait2s

	call	setaltmap

	mov	msg,#1
	mov	rmsg,#1

setidle:
	mov	cfg,#IDLE
	call	setcfg
	clr	testx
	call	showmsg
cleartask:
	mov	timeout0,#0
	mov	timeout1,#AUTOPD
	clr	taskactive
	clr	newkey
	mov	TL1,#TMRLO20
	mov	TH1,#TMRHI20
	setb	ET1
	setb	TR1
	setb	EA
mainloop:
	jb	taskactive,mainloop
	jnb	newkey,mainloop
	clr	newkey
	clr	EA
	mov	timeout0,#0
	mov	timeout1,#AUTOPD
	setb	taskactive
	mov	A,keycode
	rl	A						;keycode is <80h, so rl is just sl
	mov	DPTR,#functiontable
	jmp @A+DPTR
functiontable:
	ajmp	key0
	ajmp	key1
	ajmp	key2
	ajmp	key3
	ajmp	key4
	ajmp	key5
	ajmp	key6
	ajmp	key7
	ajmp	key8
	ajmp	key9
	ajmp	setsrkey	;"star" key
	ajmp	cancelkey		;"pound" key
	ajmp	recordkey
	ajmp	cleartask	;not used in this array
	ajmp	erasekey
	ajmp	playkey

cancelkey:
key1:
key4:
key7:
	mov	cdh,#0
	jmp	cleartask

key2:
	jmp	playkey
key5:
	jmp	recordkey
key8:
	jmp	erasekey
key0:
	jmp	doinitmap

key6:
	call	getmsginfo
	call	printinfo
	call	wait2s
; display secondary info for 1 sec- if new key on exit, (ph number??)
; display tertiary info	(time and sample rate)
	mov	cdh,#0
	jmp	setidle

key9:	;prev msg in idle, vol up during play
	djnz	msg,msginrange
	mov	msg,#1
	inc	cdh
	mov	A,cdh
	add	A,#0fdh
	jnc	exitscroll
	jmp	doinitmap ; inc bumpctr- if ==3, goto initmap
msginrange:
	mov	rmsg,msg
	call	getmsginfo
	mov	cdh,#0
exitscroll:
	jmp	setidle
key3:	;next msg in idle, vol down during play
	inc msg
if (m224)
	mov	A,#225		;	for 224 msgs
else
	mov	A,#97			;	for 96 msgs
endif
	cjne A,msg,msginrange
if (m224)
	mov	msg,#224	;	for 224 msgs
else
	mov	msg,#96		;	for 96 msgs
endif
	jmp	msginrange

erasekey:
	call	clrscr
	mov	DPTR,#sure
	call	prints
	call	getkey
	clr	newkey
	cjne	A,#yes,exitpk
	mov	A,msg
	jnz	doerase
	jmp	cleartask
doerase:
	call	clrscr
	mov	DPTR,#inerase
	call	prints
	call	erase
exitpk:
	mov	cdh,#0
	jmp	setidle
	
;change to set sample rate- then use up/down plus enter
setsrkey:
	mov	cdh,#0
dosrset:
	call	clrscr
	mov	DPTR,#setsrate
	call	prints
	mov	A,cdh
	jnz	not8
	mov DPTR,#sr8
	jmp finsrset
not8:
	cjne	A,#1,not6
	mov DPTR,#sr6
	jmp finsrset
not6:	
	cjne	A,#2,not5
	mov DPTR,#sr5
	jmp finsrset
not5:	
	mov DPTR,#sr4
finsrset:
	call	prints
keepwaiting:
	call	getkey
	clr	newkey
	cjne	A,#3,notless
	mov	A,cdh
	jz	keepwaiting
	dec	cdh
	jmp	dosrset
notless:
	cjne	A,#9,notmore
	mov	A,cdh
	cjne	A,#3,bumpit
	jmp	keepwaiting
bumpit:
	inc	cdh
	jmp	dosrset
notmore:
	cjne	A,#YES,keepwaiting
	mov	A,cdh
	mov	DPTR,#srdecode
	movc	A,@A+DPTR
	mov	samprate,A
	mov	cdh,#0
	jmp	setidle

doinitmap:
	call	clrscr
	mov	DPTR,#eraseall
	call	prints
	call	getkey
	cjne	A,#0,chkyes1
	jmp	do2
chkyes1:
	cjne	A,#YES,stopthis
do2:
	call	clrscr
	mov	DPTR,#init
	call	prints
	call	initmap
	mov	cdh,#0
	jmp	setidle

recordkey:
	jnb	valid,freespot	
	call	clrscr
	mov	DPTR,#occupado
	call	prints
lookagain:
	call	getkey
	cjne	A,#YES,stopthis
	jmp	doerase
freespot:
	mov	A,rmsg
	jnz dorecord
	jmp	cleartask
dorecord:
	call	clrscr
	mov	msg,rmsg
	call showmsgspc
	call	showpos
	call	record
	call	clrscr
	mov	DPTR,#enterdata
	call	prints
	call	wait2s
	call	setmsginfo
stopthis:
	mov	cdh,#0
	jmp	setidle

playkey:
	mov	A,msg
	jnz	doplay
	jmp	cleartask
doplay:
	call	clrscr
	call showmsgspc
	call	showpos
	call	play
	jb	valid,finplay
	call	shownotvalid
finplay:
	mov	cdh,#0
	jmp	setidle

showspace:
	call clrscr
	mov	DPTR,#clsavail
	call	prints
	mov	DPTR,#cls
	call prints
showspace1:
	mov	msg,#0
	call	createbitmap
	call	convertcc
	ret

showmsg:
	call	createbitmap
	call clrscr
	mov	DPTR,#msgno
	call	prints
	mov	A,msg
	call	convertm
	jnb	valid,emptymsg
	mov	DPTR,#length
	call prints
	call	convertcc
	ret
emptymsg:
	mov	DPTR,#emptyphr
	call	prints
	ret

showmsgspc:
	mov	DPTR,#msgno
	call	prints
	mov	A,msg
	call	convertm
	mov	DPTR,#space
	call prints
	ret

showcls:
	mov	DPTR,#cls
	call	prints
	ret

showpos:
	mov	DPTR,#position
	call	prints
	ret

setcfg:
	mov	A,cfg
	add	A,cfg
	mov	DPTR,#cfgtab0
	movc	A,@A+DPTR
	mov	datah,A
	mov	A,cfg
	add	A,cfg
	inc	DPTR
	movc	A,@A+DPTR
	mov	datal,A
	mov	command,#SETCFG0
	call	sendlong
	mov	A,cfg
	add	A,cfg
	mov	DPTR,#cfgtab1
	movc	A,@A+DPTR
	anl	A,#0c7h
	mov	temp2,A
	mov	A,#7
	subb	A,volume
notpdn:
	swap A
	rr	A			;volume is <8, so after swap, rr volume is just sr
orit:
	orl	A,temp2
	mov	datah,A
	mov	A,cfg
	add	A,cfg
	inc	DPTR
	movc	A,@A+DPTR
	anl	A,#0f3h		;mask off frequency bits
	orl	A,samprate
	mov	datal,A
	mov	command,#SETCFG1
	call	sendlong
	mov	A,#(TPUD+10)
	call waitms
	ret

poweron:
	setb	MIC
	setb	power
	mov	command,#STOP
	call	sendshort
	mov	A,#TPUD
	call	waitms
	mov	cfg,#IDLE
	call	setcfg
	ret

poweroff:
	mov	cfg,#IDLE
	call	setcfg
	clr	power
	mov	command,#STOPPDN
	call	sendshort
	mov	A,#TPUD
	call	waitms
	clr	MIC
	ret

sendlonga:
	mov datah,addrh
	mov	datal,addrl
sendlong:
	clr	SDA					;start condition
	mov	A,#080h			;address=040h, write, or
	call	writebyte	;wait for acknowledge
	mov	A,command
	call	writebyte	;wait for acknowledge
	mov	A,datah
	call	writebyte	;wait for acknowledge
	mov	A,datal
	call	writebyte	;wait for acknowledge
	call	dostop
	ret

dostop:
	clr	SDA					;to establish level for subsequent stop condition
	nop
	nop
	nop
	setb	SCL
	jnb	SCLIN,$		;wait until SCL is released to ensure operation is completed
	mov	A,#15
	call waitus
;	nop
	setb	SDA				;stop condition
	ret	

writedigital:
	mov	command,#STOPDIG
	call	sendshort
;	mov	A,#100
;	call	waitus	;******change; added
	call	adjaddr
	setb	SCL	;******change; added
	jnb	SCLIN,$
	jb	freeform,nosetwd
	mov	R0,#databuf
nosetwd:
	clr	SDA					;start condition
	mov	A,#080h			;address=040h, write, or
	call	writebyte	;wait for acknowledge
	mov	A,#DIGWR		;write digital
	call	writebyte	;wait for acknowledge
	mov	A,datah
	call	writebyte	;wait for acknowledge
	mov	A,datal
	call	writebyte	;wait for acknowledge
;	mov	A,#100
;	call	waitus
; get eight byte chunk, set pointer, send eight times
	mov	R3,#8
write8:
	mov	A,@R0
	inc	R0

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费电影一区| 蜜桃视频免费观看一区| 香蕉久久一区二区不卡无毒影院| 天天综合色天天| 国产呦精品一区二区三区网站| 成人午夜看片网址| 欧美特级限制片免费在线观看| 欧美一级二级三级蜜桃| 久久午夜电影网| 国产真实乱对白精彩久久| 久久精品视频一区二区| 亚洲女同一区二区| 久久国内精品视频| 色www精品视频在线观看| 国产精品无码永久免费888| 亚洲免费在线视频| 久久99精品久久久久久久久久久久| 成人永久aaa| 欧美精品一二三区| 国产精品女同一区二区三区| 亚洲国产日韩a在线播放| 狠狠色狠狠色综合| 欧美亚洲综合网| 国产欧美综合在线观看第十页| 亚洲国产精品综合小说图片区| 国产尤物一区二区在线| 欧美日韩精品欧美日韩精品一| 国产亚洲欧美日韩在线一区| 亚洲成av人片在线观看无码| 成人国产精品免费观看动漫| 91精品国产入口| 国产精品国产三级国产普通话三级| 日本成人在线看| 色婷婷精品大在线视频| 久久精品夜色噜噜亚洲aⅴ| 亚洲成人av一区二区三区| 丁香婷婷综合色啪| 久久国内精品自在自线400部| 88在线观看91蜜桃国自产| 欧美日韩在线三级| 国产精品婷婷午夜在线观看| 日本不卡不码高清免费观看| 色综合天天综合网天天狠天天| 亚洲免费在线观看| 国产在线国偷精品免费看| 欧美日韩精品一区二区三区蜜桃| 国产精品另类一区| 国内精品国产三级国产a久久| 欧美视频精品在线观看| 中文字幕一区二区三区在线不卡| 狂野欧美性猛交blacked| 欧美丝袜自拍制服另类| 亚洲色图在线看| 国产成人精品综合在线观看| 日韩欧美一级在线播放| 性做久久久久久免费观看| 91免费在线播放| 国产精品久久国产精麻豆99网站| 国产做a爰片久久毛片| 91精品国产欧美一区二区成人| 亚洲综合一区二区| 91精品国产欧美一区二区18| 亚洲成人综合网站| 欧美无砖专区一中文字| 亚洲色图欧美在线| 99精品视频中文字幕| 中文字幕av一区二区三区| 国产精品69久久久久水密桃| www久久精品| 国模娜娜一区二区三区| 精品国产凹凸成av人网站| 久久疯狂做爰流白浆xx| 精品国产a毛片| 国产综合色视频| 久久久久国产精品麻豆ai换脸| 国产一区二区中文字幕| 久久亚洲一区二区三区明星换脸| 九九久久精品视频| 久久久久久久久久久久久夜| 国产精品123| 国产精品嫩草久久久久| eeuss影院一区二区三区 | |精品福利一区二区三区| 国产成人免费av在线| 中文天堂在线一区| 91美女在线视频| 亚洲一区二区偷拍精品| 欧美日韩国产成人在线91| 天堂午夜影视日韩欧美一区二区| 91麻豆精品国产91久久久资源速度 | 久久久精品黄色| 高清beeg欧美| 自拍偷拍亚洲综合| 欧美三区在线观看| 日本不卡免费在线视频| 26uuu亚洲| 成人午夜激情在线| 亚洲精品菠萝久久久久久久| 欧美亚洲一区二区在线观看| 天使萌一区二区三区免费观看| 欧美一级理论片| 国产精品911| 中文字幕视频一区二区三区久| 同产精品九九九| 亚欧色一区w666天堂| 精品欧美乱码久久久久久1区2区| 精品一区二区免费在线观看| 国产免费成人在线视频| 色婷婷亚洲婷婷| a亚洲天堂av| 亚洲国产中文字幕在线视频综合| 日韩色视频在线观看| 国产不卡视频一区| 亚洲一二三级电影| 精品国产污污免费网站入口| a级精品国产片在线观看| 亚洲成va人在线观看| 26uuu国产电影一区二区| 色婷婷国产精品综合在线观看| 免费看欧美女人艹b| 国产精品色哟哟网站| 欧美日韩美少妇| 国产成人在线影院| 亚洲高清不卡在线| 国产欧美一区二区精品秋霞影院| 欧美亚洲综合另类| 国产91在线观看| 三级欧美韩日大片在线看| 国产日产亚洲精品系列| 欧美日韩二区三区| 成人精品视频.| 石原莉奈一区二区三区在线观看| 中文字幕高清一区| 欧美一级片在线看| 91麻豆免费看片| 国产美女一区二区| 亚洲精品成人a在线观看| www.色精品| 激情文学综合插| 欧美一区二区精美| jlzzjlzz亚洲日本少妇| 美女性感视频久久| 一区二区三区四区在线免费观看| 精品精品欲导航| 欧美色图12p| 99天天综合性| 国产一区欧美一区| 性久久久久久久久久久久| 日本一区二区不卡视频| 日韩美女主播在线视频一区二区三区| 91尤物视频在线观看| 国产精品538一区二区在线| 青青草97国产精品免费观看无弹窗版| 亚洲男人天堂一区| 国产精品乱码一区二三区小蝌蚪| 日韩久久精品一区| 欧美日本一区二区三区四区 | 久久久精品免费免费| 欧美一区二区福利在线| 欧美性做爰猛烈叫床潮| 97超碰欧美中文字幕| 国产69精品久久99不卡| 激情久久五月天| 日韩电影一二三区| 亚洲二区视频在线| 亚洲自拍欧美精品| 日韩理论片网站| 国产精品视频yy9299一区| 久久久久国产精品免费免费搜索| 日韩欧美aaaaaa| 91精品国产高清一区二区三区| 欧美色成人综合| 欧美自拍偷拍午夜视频| 日本电影欧美片| 色噜噜狠狠色综合欧洲selulu| 懂色av中文一区二区三区| 国产精品一区免费视频| 国产一区不卡在线| 韩国av一区二区三区在线观看| 久久99精品久久久久久| 亚洲高清视频中文字幕| 玉米视频成人免费看| 日韩三级免费观看| 国产91在线看| 99久久免费精品| av爱爱亚洲一区| 成人aaaa免费全部观看| 成人福利视频在线| av在线不卡网| 99久久久久免费精品国产| 欧美一区二区私人影院日本| 91精品国模一区二区三区| 91精品福利在线一区二区三区| 欧美一区二区三区小说| 日韩欧美一区在线| 欧美tk丨vk视频| 国产三级精品三级在线专区| 欧美国产亚洲另类动漫| 自拍偷拍国产精品| 亚洲一线二线三线视频|