📄 inital.lst
字号:
C51 COMPILER V7.50 INITAL 09/29/2006 10:54:50 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE INITAL
OBJECT MODULE PLACED IN inital.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE inital.c BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 //*********************************************************************
2 // inital.c 1828 的初始化程序文件
3 // by hibernate 2005.9.29
4 // ShenZhen Challenge Technology Co.,Ltd
5 //remarks:本文件根据vxis原参考程序中func_shi文件改写
6 //*********************************************************************
7 #include "inital_data.h"
8 #include "vxis1828.h"
9 #include "IIC_RW.h"
10 #include "config.h"
11 #include "osd.h"
12 #include "status.h"
13 #include "timer.h"
14 #include "handlekey.h"
15
16 //本文件函数定义
17 void setInit1828();
18 void handleFormat(); // 制式的处理函数定义
19 void set1828reg(unsigned char * array); // 1828 各种寄存器的设置函数
20 void setScreenMode(unsigned char current_format,unsigned char screen_mode); // 屏幕比例的设置函数
21 void initFormat(unsigned char format); // 制式的初始化函数定义
22
23 //****************************************************
24 // 函数:void setInit1828()
25 // 作用:对1828进行初始化,包含有制式等的设置
26 // remarks:对1828开机时需要有的功能就在这个函数中进行添加
27 //****************************************************
28 void setInit1828()
29 {
30 1 //unsigned char open_format;
31 1 unsigned char open_ch = 0x01; // 开机默认通道
32 1
33 1 set1828reg(&init1828_data); // 对1828进行初始化,1828下配置过程;
34 1 //DelayXms(0xFF);
35 1 DelayXms(0x10);
36 1
37 1 // 开机通道设置
38 1 set1828Ch(open_ch);
39 1 setCurrentCh(open_ch) ;
40 1 //open_format = getCurrentFormat();
41 1 //displayCap(0x01,open_format);
42 1
43 1 // 开机颜色设置
44 1 loadAppInitValue();
45 1 setICAppValue();
46 1
47 1 // Set initial address of OSD block
48 1 // The initial address of Title Block is default 0x00
49 1 osd_madr(content,0x20); // Set the initial address of Content Block
50 1 osd_madr(bottom,0xa0); // Set the initial address of Bottom Block
51 1 osdSwitch(0x00); // Turn the OSD T/C/B block off
52 1 osd_blink(0x0f); // Set the OSD blinking rate
53 1 osd_alpha(0x0d); // Set the OSD transparent
54 1 }
55
C51 COMPILER V7.50 INITAL 09/29/2006 10:54:50 PAGE 2
56 //****************************************************
57 // 函数:void handleFormat()
58 // 作用:对1828 制式有无变化进行处理
59 // remarks:1828制式有变化时需要进行制式变化寄存器参数设置
60 //****************************************************
61 void handleFormat()
62 {
63 1 unsigned char temp_format;
64 1 unsigned char now_format;
65 1 unsigned char now_ch;
66 1
67 1 temp_format = get1828Format();
68 1 now_format = getCurrentFormat();
69 1 now_ch = getCurrentCh();
70 1 if (temp_format != now_format)
71 1 {
72 2 initFormat(temp_format);
73 2 displayCap(now_ch,temp_format); // 变化时可以显示制式
74 2 setCurrentFormat(temp_format );
75 2 }
76 1 }
77
78
79 //****************************************************
80 // 函数: void iinitFormat(unsigned char current_format)
81 // 作用: 当制式有变化时,需要更改一些寄存器参数值
82 // remarks:这个函数只对不同的制式进行初始化
83 //****************************************************
84 void initFormat(unsigned char format)
85 {
86 1 DelayXms(0x10);
87 1 DelayXms(0x10);
88 1
89 1 if(format == 0x03)
90 1 set1828reg(&init_NTSC_data); // 更改NTSC制的寄存器参数
91 1 else
92 1 set1828reg(&init_PAL_data); // 更改PAL制的寄存器参数
93 1 }
94
95 //****************************************************
96 // 函数: void setScreenMode(unsigned char format,unsigned char screen_mode)
97 // 作用: 函数根据不同制式的标志位作出屏幕(比例)模式的变化
98 // 参数: format => 当前的制式
99 // screen_mode => 16:9 / 4:3 的标志
100 // remarks:
101 //****************************************************
102 void setScreenMode(unsigned char current_format,unsigned char screen_mode)
103 {
104 1 if(current_format == 0x03) // NTSC
105 1 {
106 2 if(screen_mode == 0x00) // 4:3 to 16:9
107 2 set1828reg(&r43to169_N_data); // 寄存器参数设置为16:9(NTSC)
108 2 else // 16:9 to4:3
109 2 set1828reg(&r169to43_N_data); // 寄存器参数设置为4:3(NTSC)
110 2 }
111 1 else //PAL
112 1 {
113 2 if(screen_mode == 0x00) // 4:3 to16:9
114 2 set1828reg(&r43to169_P_data); //寄存器参数设置为16:9(PAL)
115 2 else //16:9 to4:3 initial data of the aspect ratio from 16:9 to 4:3 in PAL
116 2 set1828reg(&r169to43_P_data); //寄存器参数设置为4:3(PAL)
117 2 }
C51 COMPILER V7.50 INITAL 09/29/2006 10:54:50 PAGE 3
118 1 }
119
120 //***********************************************
121 //函数:void set1828reg(unsigned char * array)
122 //作用:1828 各种寄存器的设置函数(从数组到1828)
123 //remark:1、 函数通过读取 array(数据数组) 向1828写入数据,
124 // 2、 array数组的格式可见数组定义
125 //************************************************
126 void set1828reg(unsigned char * array)
127 {
128 1 unsigned char count;
129 1 unsigned char i;
130 1 unsigned char tmp;
131 1
132 1 count = getLength(array);
133 1
134 1 for(i = 0;i < count;i+= 0x02)
135 1 {
136 2 tmp = array[i+1]; // 奇数位是数值
137 2 write1828(array[i],array[i+1]); // 偶数位是寄存器地址
138 2 }
139 1 }
140
141
C51 COMPILER V7.50 INITAL 09/29/2006 10:54:50 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION setInit1828 (BEGIN)
; SOURCE LINE # 28
; SOURCE LINE # 29
; SOURCE LINE # 31
0000 750001 R MOV open_ch,#01H
; SOURCE LINE # 33
0003 7BFF MOV R3,#0FFH
0005 7A00 R MOV R2,#HIGH init1828_data
0007 7900 R MOV R1,#LOW init1828_data
0009 120000 R LCALL _set1828reg
; SOURCE LINE # 35
000C 7F10 MOV R7,#010H
000E 120000 E LCALL _DelayXms
; SOURCE LINE # 38
0011 AF00 R MOV R7,open_ch
0013 120000 E LCALL _set1828Ch
; SOURCE LINE # 39
0016 AF00 R MOV R7,open_ch
0018 120000 E LCALL _setCurrentCh
; SOURCE LINE # 44
001B 120000 E LCALL loadAppInitValue
; SOURCE LINE # 45
001E 120000 E LCALL setICAppValue
; SOURCE LINE # 49
0021 7D20 MOV R5,#020H
0023 7F02 MOV R7,#02H
0025 120000 E LCALL _osd_madr
; SOURCE LINE # 50
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -