📄 osd.s
字号:
.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 + -