⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d51_new.src

📁 基于ARM编的9850,可以实现多种波形的输出与变换
💻 SRC
📖 第 1 页 / 共 3 页
字号:
	USING	0
			; SOURCE LINE # 86
; {
			; SOURCE LINE # 87
; 	unsigned i;
; 	i=LED_DATA;
			; SOURCE LINE # 89
	MOV  	DPTR,#0E000H
	MOVX 	A,@DPTR
;---- Variable 'i?952' assigned to Register 'R4/R5' ----
	MOV  	R5,A
	MOV  	R4,#00H
; 	i<<=8;
			; SOURCE LINE # 90
	MOV  	R5,#00H
	MOV  	R4,A
; 	i|=LED_DATA;
			; SOURCE LINE # 91
	MOVX 	A,@DPTR
	MOV  	R5,A
	CLR  	A
; 	i>>=7;
			; SOURCE LINE # 92
	MOV  	A,R5
	MOV  	R6,AR4
	MOV  	R0,#07H
?C0131:
	XCH  	A,R6
	CLR  	C
	RRC  	A
	XCH  	A,R6
	RRC  	A
	DJNZ 	R0,?C0131
	MOV  	R5,A
	MOV  	R4,AR6
; 	LED_DATA=(unsigned char)(i&0xff);
			; SOURCE LINE # 93
	MOV  	DPTR,#0E000H
	MOVX 	@DPTR,A
; }
			; SOURCE LINE # 94
	RET  	
; END OF DisplayLED

; void encode(unsigned int adr) {

	RSEG  ?PR?_encode?D51_NEW
_encode:
	USING	0
	MOV  	adr?1053,R6
	MOV  	adr?1053+01H,R7
			; SOURCE LINE # 95
; 	int i;
; 	unsigned int adr1;
; 	uchar c;
; 	adr1=adr;
			; SOURCE LINE # 99
;---- Variable 'adr1?1055' assigned to Register 'R4/R5' ----
	MOV  	R5,adr?1053+01H
	MOV  	R4,adr?1053
; 	for(i=0;i<8;i++){
			; SOURCE LINE # 100
;---- Variable 'i?1054' assigned to Register 'R2/R3' ----
	CLR  	A
	MOV  	R3,A
	MOV  	R2,A
?C0033:
; 		if(adr==0x8000){
			; SOURCE LINE # 101
	CLR  	A
	CJNE 	A,adr?1053+01H,?C0036
	MOV  	A,adr?1053
	CJNE 	A,#080H,?C0036
; 			DispBuf[i]=LedTab[OKLedChar[i]];
			; SOURCE LINE # 102
	MOV  	A,#LOW (OKLedChar)
	ADD  	A,R3
	MOV  	DPL,A
	MOV  	A,#HIGH (OKLedChar)
	ADDC 	A,R2
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	DPTR,#LedTab
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	A,#LOW (DispBuf)
	ADD  	A,R3
	MOV  	R0,A
	MOV  	@R0,AR7
; 		}
			; SOURCE LINE # 103
	SJMP 	?C0035
?C0036:
; 		else{
			; SOURCE LINE # 104
; 			c=adr1&0x0f;
			; SOURCE LINE # 105
	MOV  	A,R5
	ANL  	A,#0FH
;---- Variable 'c?1056' assigned to Register 'R1' ----
	MOV  	R1,A
; 			adr1>>=4;
			; SOURCE LINE # 106
	MOV  	A,R4
	SWAP 	A
	MOV  	R0,A
	ANL  	A,#0F0H
	XCH  	A,R0
	XRL  	A,R0
	MOV  	R4,A
	MOV  	A,R5
	SWAP 	A
	ANL  	A,#0FH
	ORL  	A,R0
	MOV  	R5,A
; 			if(i>3)c=ERRT[7-i];
			; SOURCE LINE # 107
	SETB 	C
	MOV  	A,R3
	SUBB 	A,#03H
	MOV  	A,R2
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0038
	MOV  	A,#07H
	SUBB 	A,R3
	MOV  	R7,A
	CLR  	A
	SUBB 	A,R2
	MOV  	R6,A
	MOV  	A,#LOW (ERRT)
	ADD  	A,R7
	MOV  	DPL,A
	MOV  	A,#HIGH (ERRT)
	ADDC 	A,R6
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R1,A
?C0038:
; 			DispBuf[7-i]=LedTab[c];
			; SOURCE LINE # 108
	MOV  	A,R1
	MOV  	DPTR,#LedTab
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	CLR  	C
	MOV  	A,#07H
	SUBB 	A,R3
	ADD  	A,#LOW (DispBuf)
	MOV  	R0,A
	MOV  	@R0,AR7
; 		}
			; SOURCE LINE # 109
; 	}
			; SOURCE LINE # 110
?C0035:
	INC  	R3
	CJNE 	R3,#00H,?C0133
	INC  	R2
?C0133:
	MOV  	A,R3
	XRL  	A,#08H
	ORL  	A,R2
	JNZ  	?C0033
; 	
; }
			; SOURCE LINE # 112
?C0039:
	RET  	
; END OF _encode

; void encode1(void) {//12345678

	RSEG  ?PR?encode1?D51_NEW
encode1:
	USING	0
			; SOURCE LINE # 113
; 	unsigned char i;
; 	for(i=0;i<8;i++){
			; SOURCE LINE # 115
;---- Variable 'i?1157' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
?C0040:
; 		DispBuf[i]=LedTab[i+1];
			; SOURCE LINE # 116
	MOV  	A,R7
	MOV  	DPTR,#LedTab+01H
	MOVC 	A,@A+DPTR
	MOV  	R6,A
	MOV  	A,#LOW (DispBuf)
	ADD  	A,R7
	MOV  	R0,A
	MOV  	@R0,AR6
; 	}
			; SOURCE LINE # 117
	INC  	R7
	CJNE 	R7,#08H,?C0040
; 	
; }
			; SOURCE LINE # 119
?C0043:
	RET  	
; END OF encode1

; void encode2(void) {//87654321

	RSEG  ?PR?encode2?D51_NEW
encode2:
	USING	0
			; SOURCE LINE # 120
; 	unsigned char i;
; 	for(i=0;i<8;i++){
			; SOURCE LINE # 122
;---- Variable 'i?1258' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
?C0044:
; 		DispBuf[i]=LedTab[8-i];
			; SOURCE LINE # 123
	MOV  	A,R7
	MOV  	R5,A
	CLR  	C
	MOV  	A,#08H
	SUBB 	A,R5
	MOV  	R5,A
	CLR  	A
	SUBB 	A,#00H
	MOV  	R4,A
	MOV  	A,#LOW (LedTab)
	ADD  	A,R5
	MOV  	DPL,A
	MOV  	A,#HIGH (LedTab)
	ADDC 	A,R4
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R6,A
	MOV  	A,#LOW (DispBuf)
	ADD  	A,R7
	MOV  	R0,A
	MOV  	@R0,AR6
; 	}
			; SOURCE LINE # 124
	INC  	R7
	CJNE 	R7,#08H,?C0044
; 	
; }
			; SOURCE LINE # 126
?C0047:
	RET  	
; END OF encode2

; void encode3(void) {//F3

	RSEG  ?PR?encode3?D51_NEW
encode3:
	USING	0
			; SOURCE LINE # 127
; 	clearDispBuf();
			; SOURCE LINE # 128
	LCALL	clearDispBuf
; 	DispBuf[0]=LedTab[15];
			; SOURCE LINE # 129
	MOV  	DPTR,#LedTab+0FH
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	DispBuf,A
; 	DispBuf[1]=LedTab[3];
			; SOURCE LINE # 130
	MOV  	DPTR,#LedTab+03H
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	DispBuf+01H,A
; }
			; SOURCE LINE # 131
	RET  	
; END OF encode3

; void encode4(void) {//F4

	RSEG  ?PR?encode4?D51_NEW
encode4:
	USING	0
			; SOURCE LINE # 132
; 	clearDispBuf();
			; SOURCE LINE # 133
	LCALL	clearDispBuf
; 	DispBuf[0]=LedTab[15];
			; SOURCE LINE # 134
	MOV  	DPTR,#LedTab+0FH
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	DispBuf,A
; 	DispBuf[1]=LedTab[4];
			; SOURCE LINE # 135
	MOV  	DPTR,#LedTab+04H
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	DispBuf+01H,A
; 	
; }
			; SOURCE LINE # 137
	RET  	
; END OF encode4

; void encode5(unsigned char c) {

	RSEG  ?PR?_encode5?D51_NEW
_encode5:
	USING	0
;---- Variable 'c?1559' assigned to Register 'R7' ----
			; SOURCE LINE # 138
; 	unsigned char i;
; 	for(i=0;i<7;i++){
			; SOURCE LINE # 140
;---- Variable 'i?1560' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0050:
; 		DispBuf[i]=DispBuf[i+1];
			; SOURCE LINE # 141
	MOV  	A,#LOW (DispBuf+01H)
	ADD  	A,R6
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R5,A
	MOV  	A,#LOW (DispBuf)
	ADD  	A,R6
	MOV  	R0,A
	MOV  	@R0,AR5
; 	}
			; SOURCE LINE # 142
	INC  	R6
	CJNE 	R6,#07H,?C0050
?C0051:
; 	DispBuf[7]=LedTab[c-0x30];
			; SOURCE LINE # 143
	MOV  	A,R7
	MOV  	DPTR,#LedTab-030H
	MOVC 	A,@A+DPTR
	MOV  	DispBuf+07H,A
; 	
; }
			; SOURCE LINE # 145
	RET  	
; END OF _encode5

; void encode6(unsigned long freq) {

	RSEG  ?PR?_encode6?D51_NEW
L?0136:
	LCALL	clearDispBuf
L?0137:
	MOV  	R7,freq?2378+03H
	MOV  	R6,freq?2378+02H
	MOV  	R5,freq?2378+01H
	MOV  	R4,freq?2378
_encode6:
	USING	0
;---- Variable 'freq?1661' assigned to Register 'R4/R5/R6/R7' ----
			; SOURCE LINE # 146
; 	unsigned char i,c[8],j;
; 	unsigned long f;
; 	f=freq>>10;//f=freq/1024
			; SOURCE LINE # 149
	MOV  	R0,#0AH
	LCALL	?C?ULSHR
	MOV  	f?1665+03H,R7
	MOV  	f?1665+02H,R6
	MOV  	f?1665+01H,R5
	MOV  	f?1665,R4
; 	
; 	for(i=0;i<8;i++){
			; SOURCE LINE # 151
	CLR  	A
	MOV  	i?1662,A
?C0054:
; 		c[i]=0;
			; SOURCE LINE # 152
	MOV  	A,#LOW (c?1663)
	ADD  	A,i?1662
	MOV  	R0,A
	CLR  	A
	MOV  	@R0,A
; 	}
			; SOURCE LINE # 153
	INC  	i?1662
	MOV  	A,i?1662
	CJNE 	A,#08H,?C0054
?C0057:
; 	while(f>=1000000){
			; SOURCE LINE # 154
	MOV  	R7,#040H
	MOV  	R6,#042H
	MOV  	R5,#0FH
	MOV  	R4,#00H
	MOV  	R3,f?1665+03H
	MOV  	R2,f?1665+02H
	MOV  	R1,f?1665+01H
	MOV  	R0,f?1665
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0059
; 		f-=1000000;
			; SOURCE LINE # 155
	MOV  	A,f?1665+03H
	SUBB 	A,#040H
	MOV  	f?1665+03H,A
	MOV  	A,f?1665+02H
	SUBB 	A,#042H
	MOV  	f?1665+02H,A
	MOV  	A,f?1665+01H
	SUBB 	A,#0FH
	MOV  	f?1665+01H,A
	MOV  	A,f?1665
	SUBB 	A,#00H
	MOV  	f?1665,A
; 		c[1]++;
			; SOURCE LINE # 156
	INC  	c?1663+01H
; 	}
			; SOURCE LINE # 157
	SJMP 	?C0057
?C0059:
; 	while(f>=100000){
			; SOURCE LINE # 158
	MOV  	R7,#0A0H
	MOV  	R6,#086H
	MOV  	R5,#01H
	MOV  	R4,#00H
	MOV  	R3,f?1665+03H
	MOV  	R2,f?1665+02H
	MOV  	R1,f?1665+01H
	MOV  	R0,f?1665
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0061
; 		f-=100000;
			; SOURCE LINE # 159
	MOV  	A,f?1665+03H
	SUBB 	A,#0A0H
	MOV  	f?1665+03H,A
	MOV  	A,f?1665+02H
	SUBB 	A,#086H
	MOV  	f?1665+02H,A
	MOV  	A,f?1665+01H
	SUBB 	A,#01H
	MOV  	f?1665+01H,A
	MOV  	A,f?1665
	SUBB 	A,#00H
	MOV  	f?1665,A
; 		c[2]++;
			; SOURCE LINE # 160
	INC  	c?1663+02H
; 	}
			; SOURCE LINE # 161
	SJMP 	?C0059
?C0061:
; 	while(f>=10000){
			; SOURCE LINE # 162
	CLR  	A
	MOV  	R7,#010H
	MOV  	R6,#027H
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R3,f?1665+03H
	MOV  	R2,f?1665+02H
	MOV  	R1,f?1665+01H
	MOV  	R0,f?1665
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0063
; 		f-=10000;
			; SOURCE LINE # 163
	MOV  	A,f?1665+03H
	SUBB 	A,#010H
	MOV  	f?1665+03H,A
	MOV  	A,f?1665+02H
	SUBB 	A,#027H
	MOV  	f?1665+02H,A
	MOV  	A,f?1665+01H
	SUBB 	A,#00H
	MOV  	f?1665+01H,A
	MOV  	A,f?1665
	SUBB 	A,#00H
	MOV  	f?1665,A
; 		c[3]++;
			; SOURCE LINE # 164
	INC  	c?1663+03H
; 	}
			; SOURCE LINE # 165
	SJMP 	?C0061
?C0063:
; 	while(f>=1000){
			; SOURCE LINE # 166
	CLR  	A
	MOV  	R7,#0E8H
	MOV  	R6,#03H
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R3,f?1665+03H
	MOV  	R2,f?1665+02H
	MOV  	R1,f?1665+01H
	MOV  	R0,f?1665
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0065
; 		f-=1000;
			; SOURCE LINE # 167
	MOV  	A,f?1665+03H
	SUBB 	A,#0E8H
	MOV  	f?1665+03H,A
	MOV  	A,f?1665+02H
	SUBB 	A,#03H
	MOV  	f?1665+02H,A
	MOV  	A,f?1665+01H
	SUBB 	A,#00H
	MOV  	f?1665+01H,A
	MOV  	A,f?1665
	SUBB 	A,#00H
	MOV  	f?1665,A
; 		c[4]++;
			; SOURCE LINE # 168
	INC  	c?1663+04H
; 	}
			; SOURCE LINE # 169
	SJMP 	?C0063
?C0065:
; 	while(f>=100){
			; SOURCE LINE # 170
	CLR  	A
	MOV  	R7,#064H
	MOV  	R6,A
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R3,f?1665+03H
	MOV  	R2,f?1665+02H
	MOV  	R1,f?1665+01H
	MOV  	R0,f?1665
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0067
; 		f-=100;
			; SOURCE LINE # 171
	MOV  	A,f?1665+03H
	SUBB 	A,#064H
	MOV  	f?1665+03H,A
	MOV  	A,f?1665+02H
	SUBB 	A,#00H
	MOV  	f?1665+02H,A
	MOV  	A,f?1665+01H
	SUBB 	A,#00H
	MOV  	f?1665+01H,A
	MOV  	A,f?1665
	SUBB 	A,#00H
	MOV  	f?1665,A
; 		c[5]++;
			; SOURCE LINE # 172
	INC  	c?1663+05H
; 	}
			; SOURCE LINE # 173
	SJMP 	?C0065
?C0067:
; 	while(f>=10){
			; SOURCE LINE # 174
	CLR  	A
	MOV  	R7,#0AH
	MOV  	R6,A
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R3,f?1665+03H
	MOV  	R2,f?1665+02H
	MOV  	R1,f?1665+01H
	MOV  	R0,f?1665
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0068
; 		f-=10;
			; SOURCE LINE # 175
	MOV  	A,f?1665+03H
	SUBB 	A,#0AH
	MOV  	f?1665+03H,A
	MOV  	A,f?1665+02H
	SUBB 	A,#00H
	MOV  	f?1665+02H,A
	MOV  	A,f?1665+01H
	SUBB 	A,#00H
	MOV  	f?1665+01H,A
	MOV  	A,f?1665
	SUBB 	A,#00H
	MOV  	f?1665,A
; 		c[6]++;
			; SOURCE LINE # 176
	INC  	c?1663+06H
; 	}
			; SOURCE LINE # 177
	SJMP 	?C0067
?C0068:
; 	c[7]+=f;
			; SOURCE LINE # 178
	MOV  	A,f?1665+03H
	ADD  	A,c?1663+07H
	MOV  	c?1663+07H,A
; 	j=0;
			; SOURCE LINE # 179
;---- Variable 'j?1664' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
; 	for(i=0;i<8;i++){
			; SOURCE LINE # 180
	MOV  	i?1662,A
?C0069:
; 		if((c[i]==0)&&(j==0))
			; SOURCE LINE # 181
	MOV  	A,#LOW (c?1663)
	ADD  	A,i?1662
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R6,A
	JNZ  	?C0072
	MOV  	A,R7
	JNZ  	?C0072
; 			DispBuf[i]=LedTab[22];
			; SOURCE LINE # 182
	MOV  	DPTR,#LedTab+016H
	MOVC 	A,@A+DPTR
	MOV  	R5,A
	MOV  	A,#LOW (DispBuf)
	ADD  	A,i?1662
	MOV  	R0,A
	MOV  	@R0,AR5
	SJMP 	?C0071
?C0072:
; 		else{
			; SOURCE LINE # 183
; 			j=1;
			; SOURCE LINE # 184
	MOV  	R7,#01H
; 			DispBuf[i]=LedTab[c[i]];
			; SOURCE LINE # 185
	MOV  	A,R6
	MOV  	DPTR,#LedTab
	MOVC 	A,@A+DPTR
	MOV  	R6,A
	MOV  	A,#LOW (DispBuf)
	ADD  	A,i?1662
	MOV  	R0,A
	MOV  	@R0,AR6
; 		}
			; SOURCE LINE # 186
; 	}	
			; SOURCE LINE # 187
?C0071:
	INC  	i?1662
	MOV  	A,i?1662
	CJNE 	A,#08H,?C0069
; 	
; }
			; SOURCE LINE # 189
?C0074:
	RET  	
; END OF _encode6

; void clearDisplay(void) {

	RSEG  ?PR?clearDisplay?D51_NEW
clearDisplay:
			; SOURCE LINE # 190
; 	CTRL8279=0xd1;					/* clear RAM  */
			; SOURCE LINE # 191
	MOV  	DPTR,#08001H
	MOV  	A,#0D1H
	MOVX 	@DPTR,A
?C0075:
; 	while (STATUS8279 & 0x80)			/* wait till RAM is clear */
			; SOURCE LINE # 192
	MOV  	DPTR,#08001H
	MOVX 	A,@DPTR
	JB   	ACC.7,?C0075
; 	{
			; SOURCE LINE # 193
; 	}
			; SOURCE LINE # 194
; }
			; SOURCE LINE # 195
?C0077:
	RET  	
; END OF clearDisplay

; void init8279(void) {

	RSEG  ?PR?init8279?D51_NEW
init8279:
			; SOURCE LINE # 196
; 	clearDisplay();
			; SOURCE LINE # 197
	LCALL	clearDisplay
; 	CTRL8279=0x20 | 20;				/* 11.0592MHz/6/20=92.16kHz  8279 clock */
			; SOURCE LINE # 198
	MOV  	DPTR,#08001H
	MOV  	A,#034H
	MOVX 	@DPTR,A
; 	CTRL8279=(0x10<<3) | 0 ;		/* 8x8字符显示, 右入; 编码扫描键盘,双键锁定  */
			; SOURCE LINE # 199
	MOV  	A,#080H
	MOVX 	@DPTR,A
; //	InitDisplay();
; 	keyNum=0;
			; SOURCE LINE # 201
	CLR  	A
	MOV  	keyNum,A
; 
; }
			; SOURCE LINE # 203
	RET  	
; END OF init8279

; //;******** RAM自检子程序*************
; unsigned int chkram(void) {  /* RAM Chack */

	RSEG  ?PR?chkram?D51_NEW
chkram:
	USING	0
			; SOURCE LINE # 205
; 	unsigned int adr;
; 	uchar c,r;
; 	for(adr=0;adr<0x8000;adr++){
			; SOURCE LINE # 208
;---- Variable 'adr?1966' assigned to Register 'R6/R7' ----
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
?C0079:
; 		c=0xaa;
			; SOURCE LINE # 209
;---- Variable 'c?1967' assigned to Register 'R5' ----
	MOV  	R5,#0AAH
; 		XBYTE[adr]=c;
			; SOURCE LINE # 210
	MOV  	DPL,R7
	MOV  	DPH,R6
	MOV  	A,R5
	MOVX 	@DPTR,A
; 		r=XBYTE[adr];
			; SOURCE LINE # 211
	MOVX 	A,@DPTR
	MOV  	R4,A
;---- Variable 'r?1968' assigned to Register 'R4' ----
; 		if(r!=c)return adr;
			; SOURCE LINE # 212
	XRL  	A,R5
	JZ   	?C0082
	RET  	
?C0082:
; 		c=0x55;
			; SOURCE LINE # 213
	MOV  	R5,#055H
; 		XBYTE[adr]=c;
			; SOURCE LINE # 214
	MOV  	A,R5
	MOVX 	@DPTR,A
; 		r=XBYTE[adr];
			; SOURCE LINE # 215
	MOV  	DPL,R7
	MOV  	DPH,R6
	MOVX 	A,@DPTR
; 		if(r!=c)return adr;
			; SOURCE LINE # 216
	XRL  	A,R5
	JZ   	?C0081
	RET  	
; 	}
			; SOURCE LINE # 217
?C0081:
	INC  	R7
	CJNE 	R7,#00H,?C0134
	INC  	R6
?C0134:
	CLR  	A
	CJNE 	A,AR7,?C0079
	MOV  	A,R6
	CJNE 	A,#080H,?C0079
?C0080:
; 	return adr;
			; SOURCE LINE # 218
; }
			; SOURCE LINE # 219
?C0083:
	RET  	
; END OF chkram

; void delay_dds(void)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -