?? lcddram.lst
字號:
C51 COMPILER V6.02 LCDDRAM 08/02/2006 14:44:14 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE LCDDRAM
OBJECT MODULE PLACED IN D:\GB_ASC\LCDDRAM.OBJ
COMPILER INVOKED BY: e:\comp51\COMP51V6\C51.EXE D:\GB_ASC\LCDDRAM.C DB SB OE LARGE
stmt level source
1 #include <absacc.h>
2 #include <reg51.h>
3 //sbit cs_dram=P3^2;
4 sbit busy=P1^5;
5
6 extern unsigned int xdata data_address;
7 extern unsigned int xdata address;
8 extern unsigned int xdata tr_flagaddr;
9
10 extern unsigned char xdata now_day_planid;
11 extern unsigned char xdata timeid;
12 extern unsigned char xdata now_schemeid;
13 extern unsigned char xdata now_step_schid;
14 extern unsigned char xdata step_counter;
15 extern unsigned char xdata now_step_uncount;
16 extern unsigned char xdata led83[30],led82[5];
17 extern unsigned char xdata step_num;
18 unsigned char xdata tt,ttd;
19 unsigned int xdata utemp;
20 unsigned char cpu_fpga_set(unsigned char flag,unsigned int ptr,unsigned int len)
21 {
22 1 unsigned int i;
23 1 data_address=XBYTE[0XA021]<<8+XBYTE[0XA022]+1;
24 1 address=data_address;
25 1 data_address=data_address+len; //應(yīng)答數(shù)據(jù)長度1字節(jié)
26 1 if(data_address>0xa7f0)data_address=data_address-0xa7f0+0xa080;
27 1 while((XBYTE[0xa023]==0)&&(XBYTE[0xa024]==1)){}; //等待FGPA修改頭尾
28 1 XBYTE[0xa023]=0x01; //CPU修改頭尾
29 1 XBYTE[0xa024]=0X00;
30 1 data_address=(XBYTE[0XA021]<<8)+XBYTE[0XA022]+1;
31 1 address=data_address;
32 1 data_address=data_address+len; //應(yīng)答數(shù)據(jù)長度1字節(jié)
33 1 if(data_address>0xa7f0)data_address=data_address-0x7f0+0x80;
34 1 data_address--;
35 1 XBYTE[0XA021]=data_address>>8; //
36 1 XBYTE[0XA022]=data_address;
37 1 XBYTE[0XA023]=0X00; //CPU修改頭尾結(jié)束
38 1 XBYTE[0XA024]=0X00;
39 1 XBYTE[tr_flagaddr+1]=address>>8; //發(fā)送數(shù)據(jù)的首地址
40 1 XBYTE[tr_flagaddr+2]=address;
41 1 XBYTE[tr_flagaddr+3]=data_address>>8; //發(fā)送數(shù)據(jù)的尾地址
42 1 XBYTE[tr_flagaddr+4]=data_address;
43 1 address=address+0xa000; //發(fā)送應(yīng)答數(shù)據(jù)
44 1 XBYTE[address]=flag;
45 1 address++;
46 1 for(i=0;i<len;i++){
47 2 XBYTE[address+i]=XBYTE[ptr+i];
48 2 }
49 1 XBYTE[tr_flagaddr]=0x01;
50 1 return 1;
51 1 }
52 deal_lcddram()
53 {
54 1 unsigned char flag;
55 1 unsigned char id;
C51 COMPILER V6.02 LCDDRAM 08/02/2006 14:44:14 PAGE 2
56 1 unsigned char idcode;
57 1 unsigned int i,j;
58 1 //查詢
59 1 do{}while(busy==0);
60 1 flag=XBYTE[0XC408];
61 1 do{}while(busy==0);
62 1 id=XBYTE[0XC40A];
63 1 do{}while(busy==0);
64 1 idcode=XBYTE[0XC40c];
65 1 if(flag==1){
66 2 switch(id){
67 3 case 0x80: //do{}while(busy==0);XBYTE[0XC410]=0XC0;
68 3 do{}while(busy==0);XBYTE[0XC410]=XBYTE[0X8002];
69 3 do{}while(busy==0);XBYTE[0XC411]=XBYTE[0X8003];
70 3 do{}while(busy==0);XBYTE[0XC412]=XBYTE[0X8004];
71 3 do{}while(busy==0);XBYTE[0XC413]=XBYTE[0X8005];
72 3 do{}while(busy==0);XBYTE[0XC414]=XBYTE[0X8006];
73 3 do{}while(busy==0);XBYTE[0XC415]=XBYTE[0X8007];
74 3 do{}while(busy==0);XBYTE[0XC416]=XBYTE[0X8008];
75 3 do{}while(busy==0);XBYTE[0XC408]=0;
76 3 break;
77 3 case 0x82: do{}while(busy==0);XBYTE[0XC410]=0XC2;
78 3 do{}while(busy==0);XBYTE[0XC411]=0x20; //最大輸出通道數(shù)
79 3 do{}while(busy==0);XBYTE[0XC412]=0X20; //支持階段表數(shù)
80 3 do{}while(busy==0);XBYTE[0XC413]=0X20; //一個階段表支持的最大階段
-數(shù)
81 3 do{}while(busy==0);XBYTE[0XC414]=0X20; //最大控制方案數(shù)
82 3 do{}while(busy==0);XBYTE[0XC415]=0X20; //最大日計劃數(shù)
83 3 do{}while(busy==0);XBYTE[0XC416]=0X18; //一個日計劃支持的最大時段
84 3 do{}while(busy==0);XBYTE[0XC417]=XBYTE[0X72E2]; //開機時間小時
85 3 do{}while(busy==0);XBYTE[0XC418]=XBYTE[0X72E3]; //開機時間分鐘
86 3 do{}while(busy==0);XBYTE[0XC419]=XBYTE[0X72E4]; //關(guān)機時間小時
87 3 do{}while(busy==0);XBYTE[0XC41a]=XBYTE[0X72E5]; //關(guān)機時間分鐘
88 3 do{}while(busy==0);XBYTE[0XC41b]=XBYTE[0X72E6]; //關(guān)機后狀態(tài)
89 3 do{}while(busy==0);XBYTE[0XC41c]=XBYTE[0X8000];
90 3 do{}while(busy==0);XBYTE[0XC41d]=XBYTE[0X8001];
91 3 do{}while(busy==0);XBYTE[0XC408]=0;
92 3 break;
93 3
94 3 case 0x83: do{}while(busy==0);XBYTE[0XC410]=0XC3;
95 3 do{}while(busy==0);XBYTE[0XC411]=XBYTE[0XC009]; //year
96 3 do{}while(busy==0);XBYTE[0XC412]=XBYTE[0XC008]; //month
97 3 do{}while(busy==0);XBYTE[0XC413]=XBYTE[0XC007]; //date
98 3 do{}while(busy==0);XBYTE[0XC414]=XBYTE[0XC004]; //hour
99 3 do{}while(busy==0);XBYTE[0XC415]=XBYTE[0XC002]; //min
100 3 do{}while(busy==0);XBYTE[0XC416]=XBYTE[0XC000]; //sec
101 3 do{}while(busy==0);XBYTE[0XC417]=XBYTE[0XC006]; //day
102 3 do{}while(busy==0);XBYTE[0XC408]=0;
103 3 break;
104 3 case 0x84: do{}while(busy==0);XBYTE[0XC410]=0XC4; //相位信息
105 3 if(idcode==0){
106 4 j=XBYTE[0XC40D];
107 4 j=(j-1)*18;
108 4 for(i=0;i<18;i++){
109 5 do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5001+i+j];
110 5 }
111 4 }else{
112 4 j=XBYTE[0XC40D];
113 4 j=(j-1)*18;
114 4 for(i=0;i<18;i++){
115 5 do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5122+i+j];
116 5 }
C51 COMPILER V6.02 LCDDRAM 08/02/2006 14:44:14 PAGE 3
117 4 }
118 3
119 3 do{}while(busy==0);XBYTE[0XC408]=0;
120 3 break;
121 3 case 0x85: XBYTE[0XC410]=0XC5; //階段表
122 3 j=(idcode-1)*98;
123 3 for(i=0;i<98;i++){
124 4 if(i==4){
125 5 do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5242+i+j]+1;
126 5 }else{
127 5 do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5242+i+j];
128 5 }
129 4 }
130 3 do{}while(busy==0);XBYTE[0XC408]=0;
131 3 break;
132 3 case 0x86: do{}while(busy==0);XBYTE[0XC410]=0XC6; //控制方案
133 3 j=(idcode-1)*41;
134 3 for(i=0;i<41;i++){
135 4 do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x5e82+i+j];
136 4 }
137 3 do{}while(busy==0);XBYTE[0XC408]=0;
138 3 break;
139 3 // case 0x87:break;
140 3 case 0x88: do{}while(busy==0);XBYTE[0XC410]=0XC8; //日計劃
141 3 j=(idcode-1)*74;
142 3 for(i=0;i<74;i++){
143 4
144 4 do{}while(busy==0);XBYTE[0XC411+i]=XBYTE[0x63A2+i+j];
145 4
146 4 }
147 3 do{}while(busy==0);XBYTE[0XC408]=0;
148 3 break;
149 3 case 0x89: do{}while(busy==0);XBYTE[0XC410]=0XC9; //日計劃
150 3 j=XBYTE[0XC40c];
151 3 j=(j-1)*6;
152 3 for(i=0;i<60;i++){
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -