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

📄 osd.s

📁 7"车载液晶电视机 控制程序源码 WinRar3.2压缩 MCU ATMega8
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module osd.c
	.area text(rom, con, rel)
	.dbfile C:\_项目\7寸液晶电视\软件/mtv048.h
	.dbfunc e conversion_char _conversion_char fc
	.area func_lit(rom, con, rel)
L74:
	.word `L58
	.word `L59
	.word `L60
	.word `L61
	.word `L62
	.word `L63
	.word `L64
	.word `L65
	.word `L66
	.word `L67
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L5
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L70
	.word `L68
	.word `L2
	.word `L69
	.word `L72
	.word `L71
	.word `L58
	.word `L59
	.word `L60
	.word `L61
	.word `L62
	.word `L63
	.word `L64
	.word `L65
	.word `L66
	.word `L67
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L32
	.word `L33
	.word `L34
	.word `L35
	.word `L36
	.word `L37
	.word `L38
	.word `L39
	.word `L40
	.word `L41
	.word `L42
	.word `L43
	.word `L44
	.word `L45
	.word `L46
	.word `L47
	.word `L48
	.word `L49
	.word `L50
	.word `L51
	.word `L52
	.word `L53
	.word `L54
	.word `L55
	.word `L56
	.word `L57
	.word `L2
	.word `L2
	.word `L2
	.word `L2
	.word `L73
	.word `L2
	.word `L6
	.word `L7
	.word `L8
	.word `L9
	.word `L10
	.word `L11
	.word `L12
	.word `L13
	.word `L14
	.word `L15
	.word `L16
	.word `L17
	.word `L18
	.word `L19
	.word `L20
	.word `L21
	.word `L22
	.word `L23
	.word `L24
	.word `L25
	.word `L26
	.word `L27
	.word `L28
	.word `L29
	.word `L30
	.word `L31
	.area text(rom, con, rel)
	.dbfile C:\_项目\7寸液晶电视\软件/mtv048.h
;              x -> R20
	.even
_conversion_char::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 83
; /*======================
; OSD.c
; ======================*/
; #include <macros.h>
; #include "mtv048.h"
; 
; extern void iic_init(void);
; extern unsigned char iic_start(void);
; extern unsigned char iic_send(unsigned char x);
; extern unsigned char iic_receive(void);
; extern void iic_stop(void);
; /*==========================================
; write_custom_char()
; ==========================================*/
; void write_custom_char(unsigned char j,unsigned char *x)
; {
;   register unsigned char i;
;   iic_init();
;   iic_start();
;   iic_send(0x7a);  
;   iic_send(0xc0+j);  
;   iic_send(0x40);  
;   for(i=0;i<36;i++)
;     iic_send(*(x++));
;   iic_stop();
;   WDR();
; }
; /*==========================================
; OSD_init()
; ==========================================*/
; void OSD_init(void)
; {
;   iic_init();
;   iic_start();
;   iic_send(0x7a);
;   iic_send(0x8f);
;   iic_send(17);
;   iic_send(0xfb);
;   iic_stop();
; }
; /*==========================================
; OSD_window(unsigned char x)
; x==0 频道/视频源
; x==1 菜单
; x==2 音量
; ==========================================*/
; void OSD_window(unsigned char x)
; {
;   register unsigned char i;
;   unsigned char osd_init_code[26]={
;  // ADL ROW  COL   00 , 01 , 02 , 03 , 04 , 05 , 06 , 07 , 08 , 09 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18, 19 , 20 , 21 ,  22
;   0x7a,0x8f,0x40,0x0a,0x05,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x0a,0x00,0x24,0x00,0x91,0xd1,0x00,0x00,0x00,0x00};
; //  0x7a,0x8f,0x40,0x00,0x05,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x19,0x00,0x21,0x00,0xd0,0xdd,0x00};//,0x01,0xff,0xff};
;   switch(x)
;   {
;   case 0:  //x==0 频道/视频源
;     osd_init_code[03]=0x00;  //高1
;     osd_init_code[05]=0x48;  //宽10
;     osd_init_code[15]=0x09;  //右上
;     osd_init_code[16]=0x2c;
; 	break;
;   case 1:  //x==1 菜单
;     osd_init_code[03]=0x06;  //高7
;     osd_init_code[05]=0x70;  //宽15
;     osd_init_code[15]=0x18;  //居中
;     osd_init_code[16]=0x1f;
; 	break;
;   case 2:  //x==2 音量
;     osd_init_code[03]=0x00;  //高1
;     osd_init_code[05]=0x78;  //宽16
;     osd_init_code[15]=0x3a;  //下中
;     osd_init_code[16]=0x20;
; 	break;
;   }
; //  osd_init_code[5]|=2;  
;   OSD_init();
;   iic_init();
;   iic_start();
;   for(i=0;i<26;i++)
;   {
; 	iic_send(osd_init_code[i]);
;   }
;   iic_stop();
	.dbline 84
; }
	clr R21
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge X70
	rjmp L2
X70:
	ldi R24,122
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brge X71
	rjmp L2
X71:
	ldi R16,2
	ldi R17,0
	movw R18,R20
	rcall empy16s
	movw R30,R16
	ldi R24,<L74
	ldi R25,>L74
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ijmp
X0:
	.dbline 85
; /*==========================================
L5:
	.dbline 87
; OSD_out_1row()//输出一行
; row 行号
	clr R16
	rjmp L1
X1:
	.dbline 88
; col 列号
L6:
	.dbline 90
; extent 输出字符数量
; string 输出内容
	ldi R16,133
	rjmp L1
X2:
	.dbline 91
; size   字体大小
L7:
	.dbline 93
; ==========================================*/
; unsigned char OSD_out_1row(unsigned char row,unsigned char col,unsigned char extent,unsigned char size,unsigned int *string)
	ldi R16,134
	rjmp L1
X3:
	.dbline 94
; {
L8:
	.dbline 96
;   unsigned char mid;
;   register unsigned char j;
	ldi R16,135
	rjmp L1
X4:
	.dbline 97
;   mid=size+1;
L9:
	.dbline 99
;   extent<<=size;
;   iic_init();
	ldi R16,136
	rjmp L1
X5:
	.dbline 100
;   if(iic_start()==0)
L10:
	.dbline 102
;     return 0;
;   if(iic_send(0x7a)==0)
	ldi R16,137
	rjmp L1
X6:
	.dbline 103
;     return 0;  
L11:
	.dbline 105
;   if(iic_send(row+0x80)==0)
;     return 0;  
	ldi R16,138
	rjmp L1
X7:
	.dbline 106
;   if(iic_send(30)==0)
L12:
	.dbline 108
;     return 0;  
;   if(iic_send(size*3)==0)
	ldi R16,139
	rjmp L1
X8:
	.dbline 109
;     return 0;  
L13:
	.dbline 111
;   iic_stop();
;   if(iic_start()==0)
	ldi R16,140
	rjmp L1
X9:
	.dbline 112
;     return 0;
L14:
	.dbline 114
;   if(iic_send(0x7a)==0)
;     return 0;  
	ldi R16,141
	rjmp L1
X10:
	.dbline 115
;   if(iic_send(row+0x80)==0)
L15:
	.dbline 117
;     return 0;
;   for(j=0;j<extent;j++)
	ldi R16,142
	rjmp L1
X11:
	.dbline 118
;   {  
L16:
	.dbline 120
;     if(iic_send(j+col+(0x20*((*(string+j/mid))/256)))==0)
;       return 0;
	ldi R16,143
	rjmp L1
X12:
	.dbline 121
;     if(iic_send(*(string+j/mid))==0)
L17:
	.dbline 123
;       return 0; 
;   }
	ldi R16,144
	rjmp L1
X13:
	.dbline 124
;   iic_stop();
L18:
	.dbline 126
;   /////////////////////
;   return 0xff;
	ldi R16,145
	rjmp L1
X14:
	.dbline 127
; }
L19:
	.dbline 129
; /*==========================================
; OSD_out_num()//输出二位数字
	ldi R16,146
	rjmp L1
X15:
	.dbline 130
; row 行号
L20:
	.dbline 132
; col 列号
; value  数值
	ldi R16,147
	rjmp L1
X16:
	.dbline 133
; size   字体大小
L21:
	.dbline 135
; ==========================================*/
; unsigned char OSD_out_num(unsigned char row,unsigned char col,unsigned char value,unsigned char size)
	ldi R16,148
	rjmp L1
X17:
	.dbline 136
; {
L22:
	.dbline 138
;   iic_init();
;   if(iic_start()==0)
	ldi R16,149
	rjmp L1
X18:
	.dbline 139
;     return 0;
L23:
	.dbline 141
;   if(iic_send(0x7a)==0)
;     return 0;  
	ldi R16,150
	rjmp L1
X19:
	.dbline 142
;   if(iic_send(row+0x80)==0)
L24:
	.dbline 144
;     return 0;  
;   if(iic_send(30)==0)
	ldi R16,151
	rjmp L1
X20:
	.dbline 145
;     return 0;  
L25:
	.dbline 147
;   if(iic_send(size*3)==0)
;     return 0;  
	ldi R16,152
	rjmp L1
X21:
	.dbline 148
;   iic_stop();
L26:
	.dbline 150
;   if(iic_start()==0)
;     return 0;
	ldi R16,153
	rjmp L1
X22:
	.dbline 151
;   if(iic_send(0x7a)==0)
L27:
	.dbline 153
;     return 0;  
;   if(iic_send(row+0x80)==0)
	ldi R16,154
	rjmp L1
X23:
	.dbline 154
;     return 0;
L28:
	.dbline 156
;   if(iic_send(col+0x40)==0)
;     return 0;
	ldi R16,155
	rjmp L1
X24:
	.dbline 157
;   if(iic_send(conversion_char(value/10))==0)
L29:
	.dbline 159
;     return 0; 
;   if(size!=0)
	ldi R16,156
	rjmp L1
X25:
	.dbline 160
;   {
L30:
	.dbline 162
;     if(iic_send(conversion_char(value/10))==0)
;       return 0; 
	ldi R16,157
	rjmp L1
X26:
	.dbline 163
;   }
L31:
	.dbline 165
;   if(iic_send(conversion_char(value%10))==0)
;     return 0; 
	ldi R16,158
	rjmp L1
X27:
	.dbline 166
;   if(size!=0)
L32:
	.dbline 168
;   {
;     if(iic_send(conversion_char(value%10))==0)
	ldi R16,11
	rjmp L1
X28:
	.dbline 169
;       return 0; 
L33:
	.dbline 171
;   }
;   iic_stop();
	ldi R16,12
	rjmp L1
X29:
	.dbline 172
;   /////////////////////
L34:
	.dbline 174
;   return 0xff;
; }
	ldi R16,13
	rjmp L1
X30:
	.dbline 175
; /*==========================================
L35:
	.dbline 177
; guage_num()//数码进度条
; row 行号
	ldi R16,14
	rjmp L1
X31:
	.dbline 178
; col 列号
L36:
	.dbline 180
; value  数值
; size   字体大小
	ldi R16,15
	rjmp L1
X32:
	.dbline 181
; ==========================================*/
L37:
	.dbline 183
; unsigned char gauge_num(unsigned long value)
; {
	ldi R16,16
	rjmp L1
X33:
	.dbline 184
;   unsigned long int x;
L38:
	.dbline 186
;   unsigned char tmpbuf[13]={0x7a,0x85,0x42}; 
;   unsigned char j;
	ldi R16,17
	rjmp L1
X34:
	.dbline 187
;   x=(value*625);
L39:
	.dbline 189
;   for(j=0;j<8;j++)   
;   {
	ldi R16,18
	rjmp L1
X35:
	.dbline 190
;     tmpbuf[11-j]=x%10;
L40:
	.dbline 192
; 	x=x/10;
;   }
	ldi R16,19
	rjmp L1
X36:
	.dbline 193
;   for(j=3;j<7;j++)
L41:
	.dbline 195
;   {
;     tmpbuf[j]=tmpbuf[j+1];
	ldi R16,20
	rjmp L1
X37:
	.dbline 196
;   }
L42:
	.dbline 198
;   for(j=3;j<12;j++)
;   {
	ldi R16,21
	rjmp L1
X38:
	.dbline 199
;     tmpbuf[j]=conversion_char(tmpbuf[j]);
L43:
	.dbline 201
;   }
;   tmpbuf[7]=_dot;
	ldi R16,22
	rjmp L1
X39:
	.dbline 202
;   tmpbuf[11]=_M;
L44:
	.dbline 204
;   tmpbuf[12]=0x84;
;   iic_init();
	ldi R16,23
	rjmp L1
X40:
	.dbline 205
;   if(iic_start()==0)
L45:
	.dbline 207
;     return 0;
;   for(j=0;j<13;j++)
	ldi R16,24
	rjmp L1
X41:
	.dbline 208
;   {
L46:
	.dbline 210
;     if(iic_send(tmpbuf[j])==0)
;       return 0;
	ldi R16,1
	rjmp L1
X42:
	.dbline 211
;   }
L47:
	.dbline 213
;   iic_stop();
;   /////////////////////
	ldi R16,25
	rjmp L1
X43:
	.dbline 214
;   return 0xff;
L48:
	.dbline 216
; }
; /*==========================================
	ldi R16,26
	rjmp L1
X44:
	.dbline 217
; OSD_color_1row()//设置一行属性
L49:
	.dbline 219
; row 行号
; col 列号
	ldi R16,27
	rjmp L1
X45:
	.dbline 220
; extent 属性字符数量
L50:
	.dbline 222
; fg_color 字体颜色
; bg_color 背景颜色
	ldi R16,28
	rjmp L1
X46:
	.dbline 223
; ==========================================*/
L51:
	.dbline 225
; unsigned char OSD_attrib_1row(unsigned char row,unsigned char col,unsigned char extent,unsigned char fg_color,unsigned char bg_color)
; {
	ldi R16,29
	rjmp L1
X47:
	.dbline 226
;   register unsigned char j=0;
L52:
	.dbline 228
;   iic_init();
;   if(iic_start()==0)
	ldi R16,30
	rjmp L1
X48:
	.dbline 229
;     return 0;
L53:
	.dbline 231
;   if(iic_send(0x7a)==0)
;     return 0;  
	ldi R16,31
	rjmp L1
X49:
	.dbline 232
;   if(iic_send(row+0xa0)==0)
L54:
	.dbline 234
;     return 0;
;   if(iic_send(0x40+col)==0)
	ldi R16,32
	rjmp L1
X50:
	.dbline 235
;     return 0;
L55:
	.dbline 237
;   for(j=0;j<extent;j++)
;   {
	ldi R16,33
	rjmp L1
X51:
	.dbline 238
;     if(iic_send(fg_color+(bg_color<<4))==0)
L56:
	.dbline 240
;       return 0;  
;   }
	ldi R16,34
	rjmp L1
X52:
	.dbline 241
;   iic_stop();
L57:
	.dbline 243
;   return 0xff;
; }
	ldi R16,35
	rjmp L1
X53:
	.dbline 244
; /*==========================================
L58:
	.dbline 247
; OSD_off()
; ==========================================*/
; void OSD_off(void)
	ldi R16,1
	rjmp L1
X54:
	.dbline 248
; {
L59:
	.dbline 251
;   iic_start();
;   iic_send(0x7a);
;   iic_send(0x8f);
	ldi R16,2
	rjmp L1
X55:
	.dbline 252
;   iic_send(17);
L60:
	.dbline 255
;   iic_send(0x7b);
;   iic_stop();
; }
	ldi R16,3
	rjmp L1
X56:
	.dbline 256
; }
L61:
	.dbline 259
; }
; }
; }
	ldi R16,4
	rjmp L1
X57:
	.dbline 260
; }
L62:
	.dbline 263
; }
; }
; }
	ldi R16,5
	rjmp L1
X58:
	.dbline 264
; }
L63:
	.dbline 267
; }
; }
; }
	ldi R16,6
	rjmp L1
X59:
	.dbline 268
; }
L64:
	.dbline 271
; }
; }
; }
	ldi R16,7
	rjmp L1
X60:
	.dbline 272
; }
L65:
	.dbline 275
; }
; }
; }
	ldi R16,8
	rjmp L1
X61:
	.dbline 276
; }
L66:
	.dbline 279
; }
; }
; }
	ldi R16,9
	rjmp L1
X62:
	.dbline 280
; }
L67:
	.dbline 283
; }
; }
; }
	ldi R16,10
	rjmp L1
X63:
	.dbline 284
; }
L68:
	.dbline 286
; }
; }
	ldi R16,240
	rjmp L1
X64:
	.dbline 287
; }
L69:
	.dbline 289
; }
; }
	ldi R16,239
	rjmp L1
X65:
	.dbline 290
; }
L70:
	.dbline 292
; }
; }
	ldi R16,241
	rjmp L1
X66:
	.dbline 293
; }
L71:
	.dbline 295
; }
; }
	ldi R16,242
	rjmp L1
X67:
	.dbline 296
; }
L72:
	.dbline 298
; }
; }
	ldi R16,243
	rjmp L1
X68:
	.dbline 299
; }
L73:
	.dbline 301
; }
; }
	ldi R16,247
	rjmp L1
X69:
	.dbline 302
; }
L2:
	.dbline 304
; }
; }
	clr R16
	.dbline 305
; }
	.dbline -2
L1:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r x 20 c
	.dbend
	.dbfile C:\_项目\7寸液晶电视\软件\osd.c
	.dbfunc e write_custom_char _write_custom_char fV
;              i -> R20
;              x -> R22,R23
;              j -> R20
	.even
_write_custom_char::
	rcall push_gset2
	movw R22,R18
	mov R20,R16
	.dbline -1
	.dbline 16
	.dbline 18
	rcall _iic_init
	.dbline 19
	rcall _iic_start
	.dbline 20
	ldi R16,122
	rcall _iic_send
	.dbline 21
	mov R16,R20
	subi R16,64    ; addi 192
	rcall _iic_send
	.dbline 22
	ldi R16,64
	rcall _iic_send
	.dbline 23
	clr R20
	rjmp L79

⌨️ 快捷键说明

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