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

📄 dm12864m串行.s

📁 EEPROM读写程序: 先向EEPROM写入一幅图片数据
💻 S
📖 第 1 页 / 共 2 页
字号:
	xcall push_gset2
	mov R22,R18
	mov R20,R16
	.dbline -1
	.dbline 139
;     }
; }
; 
; /*-------------------在指定位置显示一半角字符-----------------------*/
; void LCMDisplayASC(char DisplayCol,char DisplayRow,char ASCCharacter)
; {
	.dbline 140
;      LCMSetXYAddress(DisplayCol,DisplayRow);
	mov R18,R22
	mov R16,R20
	xcall _LCMSetXYAddress
	.dbline 141
;      LCMWriteData(ASCCharacter);
	ldd R16,y+4
	xcall _LCMWriteData
	.dbline -2
L29:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l ASCCharacter 4 c
	.dbsym r DisplayRow 22 c
	.dbsym r DisplayCol 20 c
	.dbend
	.dbfunc e LCMDisplayString _LCMDisplayString fV
;       LCD_temp -> R20
;  DisplayString -> R22,R23
;     DisplayRow -> R10
;     DisplayCol -> R20
	.even
_LCMDisplayString::
	xcall push_gset3
	mov R10,R18
	mov R20,R16
	ldd R22,y+6
	ldd R23,y+7
	.dbline -1
	.dbline 146
; }
; 
; /*----------------------在指定位置显示字符串-------------------------*/
; void LCMDisplayString(char DisplayCol,char DisplayRow,char *DisplayString)
; { 
	.dbline 148
;     char LCD_temp; 
;     LCMSetXYAddress(DisplayCol,DisplayRow);
	mov R18,R10
	mov R16,R20
	xcall _LCMSetXYAddress
	.dbline 149
;     LCD_temp=*DisplayString;
	movw R30,R22
	ldd R20,z+0
	xjmp L32
L31:
	.dbline 151
	.dbline 152
	mov R16,R20
	xcall _LCMWriteData
	.dbline 153
	movw R24,R22
	adiw R24,1
	movw R22,R24
	movw R30,R24
	ldd R20,z+0
	.dbline 154
L32:
	.dbline 150
;     while(LCD_temp!=0x00) 
	tst R20
	brne L31
	.dbline -2
L30:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r LCD_temp 20 c
	.dbsym r DisplayString 22 pc
	.dbsym r DisplayRow 10 c
	.dbsym r DisplayCol 20 c
	.dbend
	.dbfunc e LCMDisplayNummber _LCMDisplayNummber fV
;           flag -> R20
;       LCD_temp -> R22
;     DisplayNum -> R10,R11
;     DisplayRow -> R14
;     DisplayCol -> R12
	.even
_LCMDisplayNummber::
	xcall push_gset5
	mov R14,R18
	mov R12,R16
	ldd R10,y+10
	ldd R11,y+11
	.dbline -1
	.dbline 161
;     { 
;         LCMWriteData(LCD_temp);
;         LCD_temp=*(++DisplayString);
;     }                   
; }
; 
; /*-------------------------显示一个整形数字,范围-32767~32767---------------------------*/
;                           //宏定义判断函数,其中\是连接符
;                     
; void LCMDisplayNummber(char DisplayCol,char DisplayRow,int DisplayNum)
; {
	.dbline 162
;         char LCD_temp=0,flag=0;
	clr R22
	.dbline 162
	clr R20
	.dbline 163
;         LCMSetXYAddress(DisplayCol,DisplayRow);
	mov R18,R14
	mov R16,R12
	xcall _LCMSetXYAddress
	.dbline 164
;         if(DisplayNum < 0)
	movw R24,R10
	cpi R24,0
	ldi R30,0
	cpc R25,R30
	brge L35
	.dbline 165
;         {
	.dbline 166
;                 LCMWriteData(0x2d);            //显示负号
	ldi R16,45
	xcall _LCMWriteData
	.dbline 167
;                 DisplayNum = -DisplayNum;
	movw R24,R10
	com R24
	com R25
	subi R24,0xFF
	sbci R25,0xFF
	movw R10,R24
	.dbline 168
;         }
L35:
	.dbline 169
;         LCD_temp=DisplayNum/10000;
	ldi R18,10000
	ldi R19,39
	movw R16,R10
	xcall div16s
	mov R22,R16
	.dbline 170
;          if(flag | LCD_temp)                  
	mov R2,R20
	or R2,R16
	breq L37
	.dbline 172
; 
;                     {                                   
	.dbline 174
; 
;                         LCMWriteData(0x30 + LCD_temp); 
	subi R16,208    ; addi 48
	xcall _LCMWriteData
	.dbline 176
; 
;                         flag = 1;                      
	ldi R20,1
	.dbline 178
; 
;                     }    
L37:
	.dbline 179
;         DisplayNum -= LCD_temp*10000;
	mov R18,R22
	clr R19
	ldi R16,10000
	ldi R17,39
	xcall empy16s
	sub R10,R16
	sbc R11,R17
	.dbline 180
;         LCD_temp = DisplayNum/1000;
	ldi R18,1000
	ldi R19,3
	movw R16,R10
	xcall div16s
	mov R22,R16
	.dbline 181
;        if(flag | LCD_temp)                  
	mov R2,R20
	or R2,R16
	breq L39
	.dbline 183
; 
;                     {                                   
	.dbline 185
; 
;                         LCMWriteData(0x30 + LCD_temp); 
	subi R16,208    ; addi 48
	xcall _LCMWriteData
	.dbline 187
; 
;                         flag = 1;                      
	ldi R20,1
	.dbline 189
; 
;                     }    
L39:
	.dbline 190
;         DisplayNum -= LCD_temp*1000;
	mov R18,R22
	clr R19
	ldi R16,1000
	ldi R17,3
	xcall empy16s
	sub R10,R16
	sbc R11,R17
	.dbline 191
;         LCD_temp = DisplayNum/100;
	ldi R18,100
	ldi R19,0
	movw R16,R10
	xcall div16s
	mov R22,R16
	.dbline 192
;          if(flag | LCD_temp)                  
	mov R2,R20
	or R2,R16
	breq L41
	.dbline 194
; 
;                     {                                   
	.dbline 196
; 
;                         LCMWriteData(0x30 + LCD_temp); 
	subi R16,208    ; addi 48
	xcall _LCMWriteData
	.dbline 198
; 
;                         flag = 1;                      
	ldi R20,1
	.dbline 200
; 
;                     }    
L41:
	.dbline 201
;         DisplayNum -= LCD_temp*100;
	ldi R24,100
	mul R24,R22
	sub R10,R0
	sbc R11,R1
	.dbline 202
;         LCD_temp = DisplayNum/10;
	ldi R18,10
	ldi R19,0
	movw R16,R10
	xcall div16s
	mov R22,R16
	.dbline 203
;          if(flag | LCD_temp)                  
	mov R2,R20
	or R2,R16
	breq L43
	.dbline 205
; 
;                     {                                   
	.dbline 207
; 
;                         LCMWriteData(0x30 + LCD_temp); 
	subi R16,208    ; addi 48
	xcall _LCMWriteData
	.dbline 209
; 
;                         flag = 1;                      
	ldi R20,1
	.dbline 211
; 
;                     }    
L43:
	.dbline 212
;         DisplayNum -= LCD_temp*10;
	ldi R24,10
	mul R24,R22
	sub R10,R0
	sbc R11,R1
	.dbline 213
;         LCD_temp = DisplayNum;
	mov R22,R10
	.dbline 214
;          if(flag | LCD_temp)                  
	mov R2,R20
	or R2,R10
	breq L45
	.dbline 216
; 
;                     {                                   
	.dbline 218
; 
;                         LCMWriteData(0x30 + LCD_temp); 
	mov R16,R22
	subi R16,208    ; addi 48
	xcall _LCMWriteData
	.dbline 220
; 
;                         flag = 1;                      
	ldi R20,1
	.dbline 222
; 
;                     }    
L45:
	.dbline 223
	tst R20
	brne L47
	.dbline 223
	ldi R16,48
	xcall _LCMWriteData
L47:
	.dbline -2
L34:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r flag 20 c
	.dbsym r LCD_temp 22 c
	.dbsym r DisplayNum 10 I
	.dbsym r DisplayRow 14 c
	.dbsym r DisplayCol 12 c
	.dbend
	.dbfunc e LCMInit _LCMInit fV
	.even
_LCMInit::
	.dbline -1
	.dbline 232
;         if(!flag) LCMWriteData(0x30);   
; }
; 
; 
; 
; ////////////////////////////////////////////////////////////////////
; 
; /*-----------------------液晶初始化-----------------------------*/
; void LCMInit()
; {
	.dbline 233
;   	LCDDDR_OUT;
	in R24,0x1a
	ori R24,31
	out 0x1a,R24
	.dbline 233
	.dbline 234
; 	 LCD_PSB;
	cbi 0x1b,3
	.dbline 235
; 	LCD_AK;
	sbi 0x1b,4
	.dbline 236
;     LCD_EN_L;      
	cbi 0x1b,2
	.dbline 237
;     LCD_RS_L;
	cbi 0x1b,0
	.dbline 238
;     LCD_RW_L;
	cbi 0x1b,1
	.dbline 240
;    
;     LCMWriteCommand(0x30); 
	ldi R16,48
	xcall _LCMWriteCommand
	.dbline 242
;     //  8 bits interface,basic instrument
; 	 LCMWriteCommand(0x0c);
	ldi R16,12
	xcall _LCMWriteCommand
	.dbline 244
;     //  display,cursor on
;     LCMWriteCommand(0x01); 
	ldi R16,1
	xcall _LCMWriteCommand
	.dbline 246
; 	  //  clear DDRAM
;     LCMWriteCommand(0x02);
	ldi R16,2
	xcall _LCMWriteCommand
	.dbline -2
L49:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCMDelay _LCMDelay fV
;              i -> R20,R21
;              j -> R22,R23
;              k -> R16,R17
	.even
_LCMDelay::
	xcall push_gset2
	.dbline -1
	.dbline 254
; 	  //  cursor return
;    
; 	 
; }
; 
; /*----------------------延时子函数---------------------------*/
; void LCMDelay(int k)                                     
; { 
	.dbline 257
;     int   i;
;    int  j;           
;     for(i=0;i<k;i++)
	clr R20
	clr R21
	xjmp L54
L51:
	.dbline 258
;     {
	.dbline 259
;        for(j=0;j<=2000;j++)
	clr R22
	clr R23
L55:
	.dbline 260
	.dbline 261
	.dbline 262
L56:
	.dbline 259
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 259
	ldi R24,2000
	ldi R25,7
	cp R24,R22
	cpc R25,R23
	brge L55
	.dbline 263
L52:
	.dbline 257
	subi R20,255  ; offset = 1
	sbci R21,255
L54:
	.dbline 257
	cp R20,R16
	cpc R21,R17
	brlt L51
	.dbline -2
L50:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 I
	.dbsym r j 22 I
	.dbsym r k 16 I
	.dbend

⌨️ 快捷键说明

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