?? 12864萬年歷.lst
字號:
1102 0x02,0x5d,0x4d, //1945
1103 0x09,0x2d,0x42, //1946
1104 0x2C,0x95,0xB6, //1947
1105 0x0A,0x95,0x4A, //1948
1106 0x7B,0x4A,0xBd, //1949
1107 0x06,0xCA,0x51, //1950
1108 0x0B,0x55,0x46, //1951
1109 0x55,0x5A,0xBB, //1952
C51 COMPILER V8.02 12864萬年繽 11/15/2007 20:52:01 PAGE 19
1110 0x04,0xdA,0x4e, //1953
1111 0x0A,0x5B,0x43, //1954
1112 0x35,0x2B,0xB8, //1955
1113 0x05,0x2B,0x4C, //1956
1114 0x8A,0x95,0x3f, //1957
1115 0x0e,0x95,0x52, //1958
1116 0x06,0xAA,0x48, //1959
1117 0x7A,0xd5,0x3C, //1960
1118 0x0A,0xB5,0x4f, //1961
1119 0x04,0xB6,0x45, //1962
1120 0x4A,0x57,0x39, //1963
1121 0x0A,0x57,0x4d, //1964
1122 0x05,0x26,0x42, //1965
1123 0x3e,0x93,0x35, //1966
1124 0x0d,0x95,0x49, //1967
1125 0x75,0xAA,0xBe, //1968
1126 0x05,0x6A,0x51, //1969
1127 0x09,0x6d,0x46, //1970
1128 0x54,0xAe,0xBB, //1971
1129 0x04,0xAd,0x4f, //1972
1130 0x0A,0x4d,0x43, //1973
1131 0x4d,0x26,0xB7, //1974
1132 0x0d,0x25,0x4B, //1975
1133 0x8d,0x52,0xBf, //1976
1134 0x0B,0x54,0x52, //1977
1135 0x0B,0x6A,0x47, //1978
1136 0x69,0x6d,0x3C, //1979
1137 0x09,0x5B,0x50, //1980
1138 0x04,0x9B,0x45, //1981
1139 0x4A,0x4B,0xB9, //1982
1140 0x0A,0x4B,0x4d, //1983
1141 0xAB,0x25,0xC2, //1984
1142 0x06,0xA5,0x54, //1985
1143 0x06,0xd4,0x49, //1986
1144 0x6A,0xdA,0x3d, //1987
1145 0x0A,0xB6,0x51, //1988
1146 0x09,0x37,0x46, //1989
1147 0x54,0x97,0xBB, //1990
1148 0x04,0x97,0x4f, //1991
1149 0x06,0x4B,0x44, //1992
1150 0x36,0xA5,0x37, //1993
1151 0x0e,0xA5,0x4A, //1994
1152 0x86,0xB2,0xBf, //1995
1153 0x05,0xAC,0x53, //1996
1154 0x0A,0xB6,0x47, //1997
1155 0x59,0x36,0xBC, //1998
1156 0x09,0x2e,0x50, //1999
1157 0x0C,0x96,0x45, //2000
1158 0x4d,0x4A,0xB8, //2001
1159 0x0d,0x4A,0x4C, //2002
1160 0x0d,0xA5,0x41, //2003
1161 0x25,0xAA,0xB6, //2004
1162 0x05,0x6A,0x49, //2005
1163 0x7A,0xAd,0xBd, //2006
1164 0x02,0x5d,0x52, //2007
1165 0x09,0x2d,0x47, //2008
1166 0x5C,0x95,0xBA, //2009
1167 0x0A,0x95,0x4e, //2010
1168 0x0B,0x4A,0x43, //2011
1169 0x4B,0x55,0x37, //2012
1170 0x0A,0xd5,0x4A, //2013
1171 0x95,0x5A,0xBf, //2014
C51 COMPILER V8.02 12864萬年繽 11/15/2007 20:52:01 PAGE 20
1172 0x04,0xBA,0x53, //2015
1173 0x0A,0x5B,0x48, //2016
1174 0x65,0x2B,0xBC, //2017
1175 0x05,0x2B,0x50, //2018
1176 0x0A,0x93,0x45, //2019
1177 0x47,0x4A,0xB9, //2020
1178 0x06,0xAA,0x4C, //2021
1179 0x0A,0xd5,0x41, //2022
1180 0x24,0xdA,0xB6, //2023
1181 0x04,0xB6,0x4A, //2024
1182 0x69,0x57,0x3d, //2025
1183 0x0A,0x4e,0x51, //2026
1184 0x0d,0x26,0x46, //2027
1185 0x5e,0x93,0x3A, //2028
1186 0x0d,0x53,0x4d, //2029
1187 0x05,0xAA,0x43, //2030
1188 0x36,0xB5,0x37, //2031
1189 0x09,0x6d,0x4B, //2032
1190 0xB4,0xAe,0xBf, //2033
1191 0x04,0xAd,0x53, //2034
1192 0x0A,0x4d,0x48, //2035
1193 0x6d,0x25,0xBC, //2036
1194 0x0d,0x25,0x4f, //2037
1195 0x0d,0x52,0x44, //2038
1196 0x5d,0xAA,0x38, //2039
1197 0x0B,0x5A,0x4C, //2040
1198 0x05,0x6d,0x41, //2041
1199 0x24,0xAd,0xB6, //2042
1200 0x04,0x9B,0x4A, //2043
1201 0x7A,0x4B,0xBe, //2044
1202 0x0A,0x4B,0x51, //2045
1203 0x0A,0xA5,0x46, //2046
1204 0x5B,0x52,0xBA, //2047
1205 0x06,0xd2,0x4e, //2048
1206 0x0A,0xdA,0x42, //2049
1207 0x35,0x5B,0x37, //2050
1208 0x09,0x37,0x4B, //2051
1209 0x84,0x97,0xC1, //2052
1210 0x04,0x97,0x53, //2053
1211 0x06,0x4B,0x48, //2054
1212 0x66,0xA5,0x3C, //2055
1213 0x0e,0xA5,0x4f, //2056
1214 0x06,0xB2,0x44, //2057
1215 0x4A,0xB6,0x38, //2058
1216 0x0A,0xAe,0x4C, //2059
1217 0x09,0x2e,0x42, //2060
1218 0x3C,0x97,0x35, //2061
1219 0x0C,0x96,0x49, //2062
1220 0x7d,0x4A,0xBd, //2063
1221 0x0d,0x4A,0x51, //2064
1222 0x0d,0xA5,0x45, //2065
1223 0x55,0xAA,0xBA, //2066
1224 0x05,0x6A,0x4e, //2067
1225 0x0A,0x6d,0x43, //2068
1226 0x45,0x2e,0xB7, //2069
1227 0x05,0x2d,0x4B, //2070
1228 0x8A,0x95,0xBf, //2071
1229 0x0A,0x95,0x53, //2072
1230 0x0B,0x4A,0x47, //2073
1231 0x6B,0x55,0x3B, //2074
1232 0x0A,0xd5,0x4f, //2075
1233 0x05,0x5A,0x45, //2076
C51 COMPILER V8.02 12864萬年繽 11/15/2007 20:52:01 PAGE 21
1234 0x4A,0x5d,0x38, //2077
1235 0x0A,0x5B,0x4C, //2078
1236 0x05,0x2B,0x42, //2079
1237 0x3A,0x93,0xB6, //2080
1238 0x06,0x93,0x49, //2081
1239 0x77,0x29,0xBd, //2082
1240 0x06,0xAA,0x51, //2083
1241 0x0A,0xd5,0x46, //2084
1242 0x54,0xdA,0xBA, //2085
1243 0x04,0xB6,0x4e, //2086
1244 0x0A,0x57,0x43, //2087
1245 0x45,0x27,0x38, //2088
1246 0x0d,0x26,0x4A, //2089
1247 0x8e,0x93,0x3e, //2090
1248 0x0d,0x52,0x52, //2091
1249 0x0d,0xAA,0x47, //2092
1250 0x66,0xB5,0x3B, //2093
1251 0x05,0x6d,0x4f, //2094
1252 0x04,0xAe,0x45, //2095
1253 0x4A,0x4e,0xB9, //2096
1254 0x0A,0x4d,0x4C, //2097
1255 0x0d,0x15,0x41, //2098
1256 0x2d,0x92,0xB5, //2099
1257 };
1258 ///月份數據表
1259 code uchar day_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3};
1260 code unsigned int day_code2[3]={0x111,0x130,0x14e};
1261
1262
1263
1264 /*子函數,用于讀取數據表中農歷月的大月或小月,如果該月為大返回1,為小返回0*/
1265 bit get_moon_day(uchar month_p,unsigned int table_addr)
1266 {
1267 1 uchar temp;
1268 1 switch (month_p){
1269 2 case 1:{temp=year_code[table_addr]&0x08;
1270 3 if (temp==0)return(0);else return(1);}
1271 2 case 2:{temp=year_code[table_addr]&0x04;
1272 3 if (temp==0)return(0);else return(1);}
1273 2 case 3:{temp=year_code[table_addr]&0x02;
1274 3 if (temp==0)return(0);else return(1);}
1275 2 case 4:{temp=year_code[table_addr]&0x01;
1276 3 if (temp==0)return(0);else return(1);}
1277 2 case 5:{temp=year_code[table_addr+1]&0x80;
1278 3 if (temp==0) return(0);else return(1);}
1279 2 case 6:{temp=year_code[table_addr+1]&0x40;
1280 3 if (temp==0)return(0);else return(1);}
1281 2 case 7:{temp=year_code[table_addr+1]&0x20;
1282 3 if (temp==0)return(0);else return(1);}
1283 2 case 8:{temp=year_code[table_addr+1]&0x10;
1284 3 if (temp==0)return(0);else return(1);}
1285 2 case 9:{temp=year_code[table_addr+1]&0x08;
1286 3 if (temp==0)return(0);else return(1);}
1287 2 case 10:{temp=year_code[table_addr+1]&0x04;
1288 3 if (temp==0)return(0);else return(1);}
1289 2 case 11:{temp=year_code[table_addr+1]&0x02;
1290 3 if (temp==0)return(0);else return(1);}
1291 2 case 12:{temp=year_code[table_addr+1]&0x01;
1292 3 if (temp==0)return(0);else return(1);}
1293 2 case 13:{temp=year_code[table_addr+2]&0x80;
1294 3 if (temp==0)return(0);else return(1);}
1295 2 }
C51 COMPILER V8.02 12864萬年繽 11/15/2007 20:52:01 PAGE 22
1296 1 }
1297
1298 /*************************************************************************************
1299 函數功能:輸入陽歷數據,輸出陰歷數據(只允許1901-2099年)
1300 調用函數示例:Conversion(c,year,month,day)
1301 如:計算2004年10月16日Conversion(0,0x4,0x0A,0x10);
1302 c,year,month,day均為16進制數據,c為世紀標志位,c_sun=0為21世紀,c_sun=1為20世紀
1303 調用函數后,原有數據不變,讀c_moon,year_moon,month_moon,day_moon得出陰歷16進制數據。
1304 得出的16進制數據,會在后面的顯示函數中有相應的處理。
1305 聲明:本函數中的year,month,day均為局部變量,對全局變量不會有影響。
1306 *************************************************************************************/
1307 void Conversion(bit c,char year,char month,char day)
1308 { //c=0 為21世紀,c=1 為20世紀 輸入輸出數據均為BCD數據
1309 1 uchar temp1,temp2,temp3,month_p;
1310 1 unsigned int temp4,table_addr;
1311 1 bit flag2,flag_y;
1312 1
1313 1
1314 1 //定位數據表地址
1315 1 if(c==0) { table_addr=(year+0x64-1)*0x3; }
1316 1 else { table_addr=(year-1)*0x3; }
1317 1 //定位數據表地址完成
1318 1
1319 1 //取當年春節所在的公歷月份
1320 1 temp1=year_code[table_addr+2]&0x60;
1321 1 temp1=_cror_(temp1,5);
1322 1 //取當年春節所在的公歷月份完成
1323 1
1324 1 //取當年春節所在的公歷日
1325 1 temp2=year_code[table_addr+2]&0x1f;
1326 1 //取當年春節所在的公歷日完成
1327 1
1328 1 // 計算當年春年離當年元旦的天數,春節只會在公歷1月或2月
1329 1 if(temp1==0x1) { temp3=temp2-1; }
1330 1 else { temp3=temp2+0x1f-1; }
1331 1 // 計算當年春年離當年元旦的天數完成
1332 1
1333 1 //計算公歷日離當年元旦的天數,為了減少運算,用了兩個表
1334 1 //day_code1[9],day_code2[3]
1335 1 //如果公歷月在九月或前,天數會少于0xff,用表day_code1[9],
1336 1 //在九月后,天數大于0xff,用表day_code2[3]
1337 1 //如輸入公歷日為8月10日,則公歷日離元旦天數為day_code1[8-1]+10-1
1338 1 //如輸入公歷日為11月10日,則公歷日離元旦天數為day_code2[11-10]+10-1
1339 1 if (month<10){ temp4=day_code1[month-1]+day-1; }
1340 1 else { temp4=day_code2[month-10]+day-1;}
1341 1 if ((month>0x2)&&(year%0x4==0)&&(year!=0))
1342 1 temp4+=1; //如果公歷月大于2月并且該年的2月為閏月,天數加1
1343 1 //計算公歷日離當年元旦的天數完成
1344 1
1345 1 //判斷公歷日在春節前還是春節后
1346 1 if (temp4>=temp3)
1347 1 { //公歷日在春節后或就是春節當日使用下面代碼進行運算
1348 2 temp4-=temp3;
1349 2 month=0x1;
1350 2 month_p=0x1; //month_p為月份指向,公歷日在春節前或就是春節當日month_p指向首月
1351 2 flag2=get_moon_day(month_p,table_addr); //檢查該農歷月為大小還是小月,大月返回1,小月返回0
1352 2 flag_y=0;
1353 2 if(flag2==0)temp1=0x1d; //小月29天
1354 2 else temp1=0x1e; //大小30天
1355 2 temp2=year_code[table_addr]&0xf0;
1356 2 temp2=_cror_(temp2,4); //從數據表中取該年的閏月月份,如為0則該年無閏月
1357 2 while(temp4>=temp1)
C51 COMPILER V8.02 12864萬年繽 11/15/2007 20:52:01 PAGE 23
1358 2 {
1359 3 temp4-=temp1;
1360 3 month_p+=1;
1361 3 if(month==temp2)
1362 3 {
1363 4 flag_y=~flag_y;
1364 4 if(flag_y==0)month+=1;
1365 4 }
1366 3 else
1367 3 month+=1;
1368 3 flag2=get_moon_day(month_p,table_addr);
1369 3 if(flag2==0)temp1=0x1d;
1370 3 else temp1=0x1e;
1371 3 }
1372 2 day=temp4+1;
1373 2 }
1374 1 else
1375 1 { //公歷日在春節前使
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -