久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8912|回復: 29
打印 上一主題 下一主題
收起左側

[原創]農歷轉換程序模塊,c51和a51文件均可調用,有c51調用示范,匯編...

  [復制鏈接]
跳轉到指定樓層
樓主
ID:7485 發表于 2013-5-9 12:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
農歷轉換程序模塊,c51和a51文件均可調用,有c51調用示范,匯編程序
可以屏蔽閏月的“節日”,可以辨別臘月小月29日的除夕。
農歷天干、地支紀年,有生肖。
新建工程,然后直接將兩個文件(其中nongli.c是示范文件)加入源代碼組即可。

單片機源程序如下:
  1. //此文件經2013.04.14 00:00調試正常,可以通過c程序調用,
  2. //輸入: 變量 YEAR,MONTH,DATE(年、月、日,16進制碼)
  3. //輸出:位變量CHUXI(臘月29或30除夕標志),=0是小月,臘月29日是除夕。
  4. //輸出:位變量FLAG_Y(閏月標志,判農歷節日用)FLAG_Y=0,是后月,后月無節日
  5. //輸出: TIANGAN,DIZHI(天干、地支、生肖)
  6. //輸出: NO_YEAR,NO_MONTH,NO_DATE(農歷年、月、日),(16進制碼)
  7. //      FLAG_Y,閏月標志,CHUXI,臘月小時,臘月29是除夕標志,
  8. //      以上變量和子程序名均為大寫,c51引用時應注意。
  9. ;**************************************************************
  10. ;轉換農歷子程序
  11. ;把已計算出的當年已過天數,從元旦對應的農歷日期開始,減去29
  12. ;天,再減去大小月標志,如夠減,[判斷現存的農歷月和當年的閏月
  13. ;是否相等,如相等就減1(下面加1,保持不變)],月數加1,
  14. ;再一次循環,直到不夠減,余數做日,退出子程序(本次轉換結束)
  15. ;*******************************************************
  16. PUBLIC  YEAR, MONTH,DATE                          //外部可以調用的變量(公共的)輸入的
  17. PUBLIC  NO_YEAR,NO_MONTH,NO_DATE,TIANGAN,DIZHI    //外部可以調用的變量(公共的)輸出的
  18. PUBLIC   CHUXI,FLAG_Y                             //外部可以調用的位變量(公共的)輸出的
  19. PUBLIC  ZHUAN_H                                   //外部可以調用的子程序(公共的)
  20. ZH_RAM  SEGMENT DATA      ;定義一個段名,ZH_RAM是段名,在data區間,這種格式是讓編譯器統一安排內存使用
  21.                           ;作為定義變量的空間段
  22. ZH_ROM    SEGMENT CODE    ;定義一個段名,KEYP是段名, 在CODE區間,作為本程序的存儲空間
  23. //ZH_BIAO    SEGMENT BDATA
  24. RSEG    ZH_RAM            ;定義ZH_RAM段的使用
  25.             YEAR:               DS    1        //在編譯連接整個工程時,給以下各變量保留一個字節的DATA空間
  26.             MONTH:              DS    1
  27.             DATE:               DS    1
  28.             NO_YEAR:            DS    1
  29.             NO_MONTH:           DS    1
  30.             NO_DATE:            DS    1
  31.             NO_MONTH_R:         DS    1             ;閏月
  32.             TIANGAN:            DS    1
  33.             DIZHI:              DS    1
  34. BSEG        AT  00H                                  ;定義位地址,下面的位地址從 00H開始(指定絕對地址,也可以不指定)
  35.             RUNYUEBIT:          DBIT  1              ;農歷閏月標志
  36.             CHUXI:              DBIT   RUNYUEBIT+1   ;定義除夕標志,區分臘月大小月
  37.             BZ_RUN_NIAN:        DBIT   RUNYUEBIT+2   ;定義閏年標志
  38.             FLAG_Y:             DBIT   RUNYUEBIT+3   ;閏月標志,寫農歷節日用(閏月無節日)
  39. RSEG  ZH_ROM                    //以下的代碼使用ZH_ROM段
  40. ZHUAN_H:
  41.             PUSH     ACC   
  42.             PUSH     DPH
  43.             PUSH     DPL
  44.             PUSH     03H
  45.             PUSH     04H
  46.             PUSH     05H
  47.             PUSH     06H
  48.             PUSH     07H
  49. /*           mov  sbuf, year           ;發送到電腦一個字節,供調試使用
  50.              jnb   ti,   $
  51.              clr  ti              */
  52.             CLR    RUNYUEBIT           ;清除標記位,待處理閏月時用
  53.             CALL   TIANSHU             ;調用計算天數子程序
  54.             CALL   ZUZHUANG            ;調用讀表子程序
  55.             MOV    A,   #4             ;讀第4字節,是元旦對應的農歷月日
  56.             CALL   DU_NO_SHU           ;讀取的數據在A,元旦對應的農歷月日
  57.             MOV    B,    A             ;先保護起來讀取的數據
  58.             ANL    A,   #00011111B     ;屏蔽掉高3位,只取元旦對應的農歷日
  59.             MOV    NO_DATE,  A         ;存入農歷日暫存器
  60.             MOV    A,   B              ;取回數據
  61.             ANL    A,   #10000000B     ;只取元旦農歷月份值,A=00H是11月,A=80H,是臘月,僅此可能
  62.             JZ     ZHUAN_H_0           ;A=00H是11月,A=80H,是臘月
  63.             MOV    NO_MONTH,   #12     ;A=1,就是臘月12月
  64.             CALL   ZOYI                ;是臘月,左移,表中第一個月是11月,變成臘月
  65.             JMP    ZHUAN_H_6
  66. ;以上是讀出元旦對應的農歷的月日,寫入對應單元。調整對應農歷月大小標志到最左邊一位
  67. ZHUAN_H_0:  MOV    NO_MONTH,   #11     ;否則就是11月(春節元旦間只能是11、12月)
  68. ZHUAN_H_6:  MOV    NO_YEAR,   YEAR
  69.             DEC    NO_YEAR
  70.             MOV    A,    R3            ;取出已過天數的低位
  71.             MOV    NO_MONTH_R,NO_MONTH ;另存,備農歷紀念日用(閏月標記為0)
  72.             ADD    A,    NO_DATE       ;從元旦對應農歷月的月初算起(以便后面計算)
  73.             MOV    R3,   A             ;低位送回R3
  74.             MOV    A,    R4            ;加上低位,相加后可能的進位
  75.             ADDC   A,    #0            ;加上可能有的進位
  76.             MOV    R4,   A             ;高位送回R4
  77. ZHUAN_H_3:  
  78.             MOV    NO_DATE,  R3        ;先暫存,如下面不夠減的,這就是農歷日期         
  79.             CALL   RUNYUE              ;判斷下一個月是否是閏月,并作處理
  80.             CALL   JIAN                ;減去一個月的天數(子程序)
  81.             JNZ    ZHUAN_H_4           ;剛好夠減A=0,否則跳過下面一行
  82.             MOV    A,   R4
  83.             JNZ    ZHUAN_H_4   
  84.             JMP    ZHUAN_H_2           ;跳出
  85. ZHUAN_H_4:  
  86.             JC     ZHUAN_H_2           ;不夠減的,有借位C=1,跳轉,退出
  87. ZHUAN_H_1:  
  88.             INC    NO_MONTH            ;月份加1,是否閏月都到這來,加1
  89.             MOV    A, NO_MONTH         ;是不是到了臘月?是臘月再加1,就是1月
  90.             CJNE   A,  #13, ZHUAN_H_5  ;12月再加1,就是13,轉為1月
  91.             MOV    NO_MONTH,  #1       ;農歷月進位,變為1月,農歷年加1
  92.             INC    NO_YEAR
  93. ZHUAN_H_5:  
  94.             MOV    NO_MONTH_R,NO_MONTH ;調整以后拷貝到NO_MONTH_R
  95.             JMP    ZHUAN_H_3           ;轉回,進行下一輪減法
  96. ZHUAN_H_2:                             ;如果天數沒有夠減,從這轉出
  97.             CALL     GAN_ZHI
  98.             POP      07H
  99.             POP      06H
  100.             POP      05H
  101.             POP      04H
  102.             POP      03H
  103.             POP      DPL
  104.             POP      DPH
  105.             POP      ACC
  106.             RET          ;
  107. ;**************************************************
  108. ;當前日距離元旦天數計算子程序(農歷轉換二級子程序)
  109. ;出口:高位在R4,低位在R3
  110. ;**************************************************
  111. TIANSHU:
  112.             PUSH     ACC
  113.             PUSH     DPH
  114.             PUSH     DPL
  115.             MOV   DPTR,  #TAB_MONTH    ;當前月止,累計整月天數表
  116.             MOV   A,     MONTH         ;當前公歷月份
  117.             CLR   C
  118.             RLC   A                    ;表中,每月高、低位占2字節,所以乘2
  119.             MOV   B,     A             ;保存ACC中的值
  120.             MOVC  A,     @A+DPTR       ;查表,求日期的低位字節
  121.             ADD   A,     DATE          ;加上當前日期,可能會有進位
  122.             DEC   A                    ;因后面的程序要加上元旦所對應農歷日前面的天數
  123.                                        ;比如當日17,需要加16,先減1,在這里減比較方便
  124.             MOV   R3,    A             ;暫時保存到R3
  125.             INC   DPTR                 ;讀高位字節
  126.             MOV   A,     B             ;取出ACC中的值,使用
  127.             MOVC  A,     @A+DPTR       ;查表,整月天數高位字節
  128.             ADDC  A,     #0            ;加上低位字節可能的進位(如果有C=1,否C=0)
  129.             MOV   R4,    A             ;R4存放高位字節
  130.             MOV   A,     MONTH         ;再取當前月份
  131.             CJNE  A,  #3,TIANSHU_0     ;月份是否大于3月份,如果是3月份以后需區別閏月
  132. TIANSHU_0:  JC   TIANSHU_1             ;若A<3,C=1,A>=3,C=0,若C=1則跳轉,1、2月不加閏     ;
  133.             MOV   A,     R3            ;取回當前已過天數         ;
  134.             MOV   C,     BZ_RUN_NIAN   ;大于3月加上閏年(等于1,或等于0)
  135.             ADDC  A,     #0            ;加上C中閏年的天數,是閏年RUN=1,否RUN=0,另加1天?
  136.             MOV   R3,    A             ;
  137.             MOV   A,     R4            ;加閏月以后,是否有進位?
  138.             ADDC  A,     #0            ;加上進位
  139.             MOV   R4,    A             ;存回,已過天數的高位在R4,
  140. TIANSHU_1:;  POP      PSW               ;當前日止,累計天數計算完成
  141.             POP      DPL
  142.             POP      DPH
  143.             POP      ACC
  144.             RET                        ;
  145. ;************************************************************************
  146. ;閏月處理子程序。(農歷轉換二級子程序)農歷數據表中第3字節是閏月信息,
  147. ;                最高位是閏月月份的大小,低4位是月份
  148. ;功能:1、判斷當前月是不是閏月。
  149. ;      2、是閏月在R6、R5最左面一位塞入閏月的大小標志。以后的月份大小標志順序后推
  150. ;      3、月份減1,因為后面程序按正常月加1,所以保持月份不加
  151. ;      4、閏月處理過后,做上標記,下一循環時,閏月已過去,按正常月
  152. ;************************************************************************
  153. RUNYUE:
  154.             PUSH     ACC
  155.             PUSH     B
  156.             MOV    C,   RUNYUEBIT      ;RUNYUEBIT是標記(20H.6),=1處理過
  157.             JC     RUNYUE_E            ;閏月是否處理過了(C=1),處理過,退出
  158.             MOV    A,   #3             ;判斷是否是閏月,第3字節是閏月數據
  159.             CALL   DU_NO_SHU           ;調讀數子程序
  160.             MOV    B,   A              ;保存待用
  161.             ANL    A,   #0FH           ;將讀到的數據屏蔽高4位(低4位是閏月月份)
  162.             JZ     RUNYUE_E
  163.             INC    A                   ;閏月月份加上1,如:閏四月,是第個五月
  164.             CLR    FLAG_Y              ;清除閏月標志,根據下面一句重新設置
  165.             CJNE   A,  NO_MONTH,RUNYUE_E;判斷當前月和閏月等否? 不等,跳出
  166.             SETB   FLAG_Y
  167.             MOV    A,   B              ;送回第三字節的值
  168.             RLC    A                   ;閏月大小標志移到C
  169.             MOV    A,   R6             ;前半年的大小月標志
  170.             RRC    A                   ;閏月大小標志插入R6最高位(即將處理月的位置)
  171.             MOV    R6,  A              ;
  172.             MOV    A,   R5             ;
  173.             RRC    A                   ;每個月的標志全部往后退一位
  174.             MOV    R5,  A
  175.             DEC    NO_MONTH            ;月份數減1,和上一次的月份值一樣
  176.             MOV    NO_MONTH_R,#0       ;把閏月標記為0,閏月的紀念日無效
  177.             SETB   RUNYUEBIT           ;閏年已經處理過,做上標記
  178. RUNYUE_E:
  179.             POP      B
  180.             POP      ACC
  181.             RET
  182. ;***************************************************************
  183. ;左轉移子程序,(農歷轉換二級子程序)
  184. ;每次把當月的大小值左移到C,參與農歷日期轉換運算
  185. ;***************************************************************
  186. ZOYI:
  187.             PUSH   ACC
  188.             MOV    A,   R5             ;R5是后半年的月份大小值
  189.             RLC    A                   ;
  190.             MOV    R5,   A             ;左轉以后存回
  191.             MOV    A,    R6            ;R6中存放的是前半年月份大小值
  192.             RLC    A                   ;R6轉出到C的數據參與轉移
  193.             MOV    R6,   A             ;存回。
  194.             POP    ACC
  195.             RET
  196. ;****************************************************************
  197. ;已過天數,減農歷一個月的天數子程序。(農歷轉換二級子程序)
  198. ;當年已過天數減29減大小月標志
  199. ;入口:低位數在R3,高位數在R4,
  200. ;出口:低位數在R3,高位數在R4
  201. ;****************************************************************
  202. JIAN:  
  203.             CALL   ZOYI                ;把當前月的大小標志左移到C
  204.             MOV    A,    R3            ;取已過天數的低位
  205.             SUBB   A,    #29           ;減去基本天數(小月29天,大月再減1)
  206.             MOV    R3,   A             ;送回
  207.             MOV    A,    R4
  208.             SUBB   A,    #0            ;減去C中可能有的借位
  209.             MOV    R4,   A             ;送回
  210.             MOV    A,    R3            ;
  211.             RET
  212. ;**********************************************************
  213. ;(農歷轉換二級子程序)
  214. ;讀表子程序是把農歷數據表第一個字節,放到R5中,7~2位表示7.8.9.10.11.12月
  215. ;第二字節,7~0位表示:上年11.12.當年1.2.3.4.5.6月,讀出后,放入R6
  216. ;(本來該子程序是將分散在多個字節中的信息合并,后來改變,沒有取消)
  217. ;**********************************************************
  218. ZUZHUANG:                 
  219.             MOV      A,   #1           ;讀第1字節11.12.1.2.3.4.5.6月,返回在A
  220.             CALL     DU_NO_SHU         ;讀數子程序
  221.             MOV      R6,   A           ;R6中存放11.12.1.2.3.4.5.6月大小值
  222.             MOV      C,  ACC.6         ;這個字節在后面紀念日確定除夕是否30時候用,暫存
  223.             MOV      CHUXI, C          ;CHUXI是臘月的大小標志,1為大月,除夕為30日
  224.             MOV      A,    #2          ;讀第2字節
  225.             CALL     DU_NO_SHU         ;讀數子程序
  226.             MOV      R5,   A           ;7.8.9.10.11.12月大小值存入R5
  227.             RET
  228. ;*****************************************************
  229. ;讀取農歷數據表的子程序(農歷轉換二級子程序)
  230. ;入口:欲讀取的字節序號(1~4)在A,當前年份仍然在YEAR
  231. ;出口:讀取到的數據在A
  232. ;*****************************************************
  233. DU_NO_SHU:
  234.             MOV     R7,   A            ;保存A中的字節號
  235.             MOV     DPTR, #TAB_NO_SHU  ;數據表首送DPTR
  236.             MOV     A,    YEAR         ;年送A
  237. //-------------------------------------------------------------
  238.             CLR     BZ_RUN_NIAN
  239.             JB      ACC.0,  HHHHHH     ;如果YEAR的低2位為0,是閏年
  240.             JB      ACC.1,  HHHHHH     ;
  241.             SETB    BZ_RUN_NIAN        ;設置閏年標志
  242. //-------------------------------------------------------------
  243.        HHHHHH:
  244.             CLR     C                  ;求出行數
  245.             MOV     B,    #4         ;年份乘4(左轉2次=乘4)
  246.             MUL     AB               ;因為每年4個字節數據
  247.             ADD     A,   DPL           ;偏移字節數和DPTR低位相加
  248.             MOV     DPL, A             ;送回
  249.             MOV     A,   B             ;如果僅僅是2010~2030,可以簡化        
  250.             ADDC    A,   DPH           ;低位可能有進位,所以加
  251.             MOV     DPH, A             ;*****最后修正2009.12.22.22:58
  252.             MOV     A,   R7            ;R7中是入口參數,字節號
  253.             MOVC    A,   @A+DPTR
  254.             RET
  255. ;***************************************************************
  256. ;計算農歷紀年"干支"子程序(農歷轉換二級子程序)
  257. ;***************************************************************
  258. GAN_ZHI:
  259.             PUSH  ACC
  260.             MOV   A,  NO_YEAR
  261.             CLR   C
  262.             SUBB  A,  #4               ;2004年是甲申年,設"甲"為"0",4=2004年
  263.             MOV   B,  #10              ;除以10,取余數
  264.             DIV   AB
  265.             MOV   TIANGAN,  B          ;送"天干""TIANGAN"寄存
  266.       
  267.             MOV   A,  NO_YEAR
  268.             SUBB  A,  #8               ;2008年是戊子年,子為"0"
  269.             MOV   B,  #12              ;除以12,取余數
  270.             DIV   AB
  271.             MOV   DIZHI,  B            ;送"地支""DIZHI"寄存
  272.             POP   ACC
  273.             RET
  274. ;************************************************************
  275. TAB_MONTH:
  276.           DB   0,0,0,0,31,0,59,0,90,0,120,0,151       ;每月初止天數,低位在前,高位在后
  277.                         DB   0,181,0,212,0,243,0,17,1,48,1,78,1
  278. ;******************************************************
  279. ;*******************************************************
  280. TAB_NO_SHU:         
  281.                                DB  00      ;機器是從0開始,我們習慣從1開始
  282.                                DB                        0B2H,        058H,        000H,        019H                ;2000
  283.                                DB                        0B6H,        054H,        004H,        087H                ;2001
  284.                                DB                        075H,        028H,        000H,        012H                ;2002
  285.                                DB                        0B6H,        094H,        000H,        01DH                ;2003
  286.                                DB                        05DH,        054H,        002H,        08AH                ;2004
  287.                                DB                        055H,        0A8H,        000H,        015H                ;2005
  288.                                DB                        0AAH,        0ECH,        007H,        082H                ;2006
  289.                                DB                        0C9H,        074H,        000H,        00DH                ;2007
  290.                                DB                        064H,        0B4H,        000H,        017H                ;2008
  291.                                DB                        072H,        0ACH,        005H,        086H                ;2009
  292.                                DB                        0EAH,        054H,        000H,        011H                ;2010
  293.                                DB                        06DH,        028H,        000H,        01BH                ;2011
  294.                                DB                        0AEH,        0A8H,        004H,        088H                ;2012(原數據表第一字節是0BAH,錯的)
  295.                                DB                        0ABH,        054H,        000H,        014H                ;2013
  296.                                DB                        055H,        074H,        009H,        081H                ;2014
  297.                                DB                        052H,        0E8H,        000H,        00BH                ;2015
  298.                                DB                        0A9H,        06CH,        000H,        016H                ;2016
  299.                                DB                        0D4H,        05CH,        086H,        084H                ;2017
  300.                                DB                        0D4H,        0ACH,        000H,        00FH                ;2018
  301.                                DB                        0EAH,        04CH,        000H,        01AH                ;2019
  302.                                DB                        0DEH,        054H,        004H,        087H                ;2020
  303.                                DB                        05AH,        0A8H,        000H,        012H                ;2021
  304.                                DB                        0ABH,        054H,        000H,        01DH                ;2022
  305.                                DB                        056H,        0D4H,        002H,        08AH                ;2023
  306.                                DB                        052H,        0D8H,        000H,        014H                ;2024
  307.                                DB                        0A9H,        0B8H,        006H,        082H                ;2025
  308.                                DB                        0A9H,        038H,        000H,        00DH                ;2026
  309.                                DB                        0B4H,        098H,        000H,        018H                ;2027
  310.                                DB                        0BAH,        098H,        005H,        085H                ;2028
  311.                                DB                        0B5H,        04CH,        000H,        011H                ;2029
  312.                                DB                        0D6H,        0A8H,        000H,        01CH                ;2030
  313.                                DB                        09DH,        0A8H,        003H,        088H                ;2031
  314.                                DB                        0A5H,        0B4H,        000H,        013H                ;2032
  315.                                DB                        052H,        0F4H,        007H,        081H                ;2033
  316.                                DB                        052H,        0B4H,        000H,        00BH                ;2034
  317.                                DB                        069H,        034H,        000H,        016H                ;2035
  318.                                DB                        074H,        02CH,        086H,        084H                ;2036
  319.                                DB                        0F4H,        094H,        000H,        010H                ;2037
  320.                                DB                        075H,        048H,        000H,        01AH                ;2038
  321.                                DB                        0B7H,        050H,        005H,        087H                ;2039
  322.                                DB                        02DH,        068H,        000H,        011H                ;2040
  323.                                DB                        095H,        0B4H,        000H,        01DH                ;2041
  324.                                DB                        055H,        06CH,        002H,        08AH                ;2042
  325.                                DB                        0D2H,        06CH,        000H,        015H                ;2043
  326.                                DB                        0E9H,        05CH,        007H,        082H                ;2044
  327.                                DB                        0E9H,        02CH,        000H,        00EH                ;2045
  328.                                DB                        0EAH,        094H,        000H,        019H                ;2046
  329.                                DB                        06CH,        094H,        085H,        086H                ;2047
  330.                                DB                        05BH,        048H,        000H,        010H                ;2048
  331.                                DB                        0ABH,        068H,        000H,        01CH                ;2049
  332.                                DB                        092H,        0D8H,        083H,        088H                ;2050
  333.                                DB                        0A4H,        0DCH,        000H,        013H                ;2051
  334.                                DB                        0D2H,        07CH,        008H,        01EH                ;2052
  335.                                DB                        0D2H,        05CH,        000H,        00CH                ;2053
  336.                                DB                        0D9H,        02CH,        000H,        017H                ;2054
  337.                                DB                        0DAH,        028H,        086H,        084H                ;2055
  338.                                DB                        0BAH,        094H,        000H,        00FH                ;2056
  339.                                DB                        05AH,        0C8H,        000H,        01AH                ;2057
  340.                                DB                        0A9H,        0B0H,        084H,        087H                ;2058
  341.                                DB                        02AH,        0B8H,        000H,        011H                ;2059
  342.                                DB                        0A4H,        0B8H,        000H,        01CH                ;2060
  343.                                DB                        0B4H,        0B8H,        003H,        08AH                ;2061
  344.                                DB                        0B2H,        058H,        000H,        015H                ;2062
  345.                                DB                        0B5H,        054H,        007H,        082H                ;2063
  346.                                DB                        075H,        028H,        000H,        00DH                ;2064
  347.                                DB                        0B6H,        094H,        000H,        019H                ;2065
  348.                                DB                        057H,        054H,        005H,        086H                ;2066
  349.                                DB                        055H,        0A8H,        000H,        010H                ;2067
  350.                                DB                        0A9H,        0B4H,        000H,        01BH                ;2068
  351.                                DB                        055H,        074H,        004H,        089H                ;2069
  352.                                DB                        054H,        0B4H,        000H,        013H                ;2070
  353.                                DB                        06AH,        06CH,        008H,        081H                ;2071
  354.                                DB                        0EAH,        054H,        000H,        00CH                ;2072
  355.                                DB                        06DH,        028H,        000H,        017H                ;2073
  356.                                DB                        0ADH,        0A8H,        006H,        084H                ;2074
  357.                                DB                        0ABH,        054H,        000H,        00FH                ;2075
  358.                                DB                        055H,        068H,        000H,        019H                ;2076
  359.                                DB                        0AAH,        0E8H,        004H,        087H                ;2077
  360.                                DB                        0A9H,        06CH,        000H,        012H                ;2078
  361.                                DB                        0D4H,        0ACH,        000H,        01DH                ;2079
  362.                                DB                        0ECH,        09CH,        003H,        08AH                ;2080
  363.                                DB                        0DAH,        04CH,        000H,        016H                ;2081
  364.                                DB                        0DCH,        0CCH,        007H,        083H                ;2082
  365.                                DB                        0DAH,        0A8H,        000H,        00EH                ;2083
  366.                                DB                        0ABH,        054H,        000H,        018H                ;2084
  367.                                DB                        052H,        0D4H,        085H,        086H                ;2085
  368.                                DB                        052H,        0D8H,        000H,        010H                ;2086
  369.                                DB                        0A9H,        05CH,        000H,        01BH                ;2087
  370.                                DB                        0D5H,        038H,        004H,        088H                ;2088
  371.                                DB                        0B4H,        098H,        000H,        014H                ;2089
  372.                                DB                        0BAH,        058H,        008H,        081H                ;2090
  373.                                DB                        0B5H,        048H,        000H,        00CH                ;2091
  374.                                DB                        0B6H,        0A8H,        000H,        017H                ;2092
  375.                                DB                        09AH,        0A8H,        086H,        084H                ;2093
  376.                                DB                        095H,        0B4H,        000H,        00FH                ;2094
  377.                                DB                        052H,        0B8H,        000H,        019H                ;2095
  378.                                DB                        0AAH,        074H,        004H,        086H                ;2096
  379.                                DB                        069H,        034H,        000H,        012H                ;2097
  380.                                DB                        074H,        054H,        000H,        01DH                ;2098
  381.                                DB                        07CH,        094H,        002H,        08BH                ;2099
  382.                                DB                        075H,        04CH,        000H,        015H                ;2100
  383. ;*********************************************************************
  384. END
  385. /*
  386. //以下是c51調用匯編語言"農歷轉換.asm"文件示范,需要另建立一個.c文件
  387. extern unsigned char data year,month,date;
  388. extern void zhuan_h(void);
  389. extern bit flag_y,chuxi; //農歷閏月標志,FLAG_Y=1,是前月,FLAG_Y=0,是后月,就是閏月,閏月無節日
  390.                          //chuxi是臘月大小月的標志。=0是小月,臘月29日是除夕。
  391. extern NO_YEAR,NO_MONTH,NO_DATE,TIANGAN,DIZHI;
  392. void main(void)
  393.    {
  394.      unsigned char year_1,month_1,date_1;
  395. //     year=0x0d;          //年、月、日可以是時鐘芯片讀出的值,如果是壓縮BCD碼,需要先轉換,此處為模擬
  396. //     month=0x05;         //如果是ds12887等,可以設定讀出的位hex碼,不需要轉換。
  397. //     date=0x09;
  398. //如果是ds1302讀出的值,是壓縮BCD碼,如:year_1=0x13(2013年)month_1=0x05,daye_1=0x09,需要如下轉換:
  399.      year_1=0x13;            //年、月、日若是ds1302時鐘芯片讀出的值,是壓縮BCD碼,需要先轉換,此處為模擬
  400.      month_1=0x05;
  401.      date_1=0x09;      
  402.      year=year_1/16*10+year_1%16;
  403.      month=month_1/16*10+month_1%16;
  404.      date=date_1/16*10+date_1%16;     
  405.      zhuan_h();
  406.     while(1);               //無限循環,模擬主程序,
  407.    }

  408. */
復制代碼

以上程序51hei提供下載:
匯編程序.7z (5.5 KB, 下載次數: 54)


評分

參與人數 1威望 +5 黑幣 +5 收起 理由
wangyin + 5 + 5 正好需要,對我很有用,謝謝樓主的無私奉獻

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復

使用道具 舉報

來自 2#
ID:7485 發表于 2013-6-27 14:12 | 只看該作者
liujia 發表于 2013-5-23 06:54
nongli.c  這個文件怎么找不到啊?

就是帖子里直接看到的那個程序內容。
//以下是c51調用匯編語言"農歷轉換.asm"文件示范.c文件
extern unsigned char data year,month,date;
extern void zhuan_h(void);
extern bit flag_y,chuxi; //農歷閏月標志,FLAG_Y=1,是前月,FLAG_Y=0,是后月,就是閏月,閏月無節日
                         //chuxi是臘月大小月的標志。=0是小月,臘月29日是除夕。
extern NO_YEAR,NO_MONTH,NO_DATE,TIANGAN,DIZHI;
void main(void)
   {
//     unsigned char year_1,month_1,date_1;
     year=0x0d;          //年、月、日可以是時鐘芯片讀出的值,如果是壓縮BCD碼,需要先轉換,此處為模擬
     month=0x05;         //如果是ds12887等,可以設定讀出的位hex碼,不需要轉換。
     date=0x09;
//如果是ds1302讀出的值,是壓縮BCD碼,如:year_1=0x13(2013年)month_1=0x05,daye_1=0x09,需要如下轉換:
//     year_1=0x13;            //年、月、日若是ds1302時鐘芯片讀出的值,是壓縮BCD碼,需要先轉換,此處為模擬
//     month_1=0x05;
//     date_1=0x09;      
//     year=year_1/16*10+year_1%16;
//     month=month_1/16*10+month_1%16;
//     date=date_1/16*10+date_1%16;     
     zhuan_h();
    while(1);               //無限循環,模擬主程序,
   }
回復

使用道具 舉報

板凳
ID:7485 發表于 2013-5-9 12:38 | 只看該作者
怎么出來一個“扣除金錢數”30??怎么去不掉?
回復

使用道具 舉報

地板
ID:25820 發表于 2013-5-23 06:53 | 只看該作者
終于在本論壇找到我想要的東西了
回復

使用道具 舉報

5#
ID:25820 發表于 2013-5-23 06:54 | 只看該作者
nongli.c  這個文件怎么找不到啊?
回復

使用道具 舉報

6#
ID:50527 發表于 2013-5-24 11:15 | 只看該作者
找了很久,謝了
回復

使用道具 舉報

7#
ID:60546 發表于 2014-4-11 00:02 | 只看該作者
今天無意中來到這里,這個論壇真好。
回復

使用道具 舉報

8#
ID:63692 發表于 2014-7-7 10:00 | 只看該作者
這個論壇真好,學習學習
回復

使用道具 舉報

9#
ID:21524 發表于 2014-7-12 22:32 | 只看該作者
學習學習
回復

使用道具 舉報

10#
ID:67678 發表于 2014-11-15 21:14 | 只看該作者
謝謝樓主好資料
回復

使用道具 舉報

11#
ID:63831 發表于 2014-11-17 09:23 | 只看該作者
學習哈!!!
回復

使用道具 舉報

12#
ID:94112 發表于 2015-10-30 16:51 | 只看該作者
找了很久,參考一下
回復

使用道具 舉報

13#
ID:98220 發表于 2015-12-3 21:05 | 只看該作者
不錯!!!!~看看
回復

使用道具 舉報

14#
ID:91262 發表于 2016-4-9 14:40 來自手機 | 只看該作者
很有用的材料,找了很久
回復

使用道具 舉報

15#
ID:111188 發表于 2016-4-9 23:49 | 只看該作者
看看學習一下
回復

使用道具 舉報

16#
ID:112865 發表于 2016-4-12 09:00 來自手機 | 只看該作者
感謝樓主
回復

使用道具 舉報

17#
ID:112053 發表于 2016-5-8 17:25 | 只看該作者
挺好的,拿來學習
回復

使用道具 舉報

18#
ID:153912 發表于 2016-12-11 16:19 | 只看該作者
終于有匯編的了
回復

使用道具 舉報

19#
ID:190602 發表于 2017-4-17 21:01 | 只看該作者
謝謝樓主
回復

使用道具 舉報

20#
ID:77498 發表于 2017-5-1 08:06 | 只看該作者
謝謝樓主好資料
回復

使用道具 舉報

21#
ID:216269 發表于 2017-7-7 15:24 | 只看該作者
今天無意中來到這里,這個論壇真好。
回復

使用道具 舉報

22#
ID:205887 發表于 2017-7-8 10:29 | 只看該作者
好東西一定要頂一下
回復

使用道具 舉報

23#
ID:373976 發表于 2018-7-31 18:01 | 只看該作者
看看算法是不是與眾不同?
回復

使用道具 舉報

24#
ID:373976 發表于 2018-7-31 18:03 | 只看該作者
竟然說我非法入侵?莫名其妙。
回復

使用道具 舉報

25#
ID:88727 發表于 2018-8-1 11:33 | 只看該作者

謝謝樓主
回復

使用道具 舉報

26#
ID:205015 發表于 2019-4-9 14:32 | 只看該作者
需要,感謝分享。
回復

使用道具 舉報

27#
ID:389903 發表于 2019-9-20 09:17 | 只看該作者
謝謝分享。下載回來學習一下。
回復

使用道具 舉報

28#
ID:623087 發表于 2019-10-21 23:19 | 只看該作者
太及時了,正好用到
回復

使用道具 舉報

29#
ID:699879 發表于 2020-3-31 17:33 | 只看該作者
正好能用的上,試試看。
回復

使用道具 舉報

30#
ID:572101 發表于 2020-4-7 15:26 | 只看該作者
終于找到我需要的了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级在线毛片 | 久久久91精品国产一区二区三区 | 午夜精品在线 | 免费国产视频在线观看 | 一本岛道一二三不卡区 | 91美女在线 | 91国产精品在线 | 日韩中文字幕免费在线观看 | 日本一区二区三区在线观看 | 成人在线网 | 91久久| 欧洲亚洲一区二区三区 | 亚洲精品观看 | 午夜免费电影院 | 欧美精品一区二区三区四区 | 国产成人精品一区二区三区四区 | 在线一区| 久草免费在线视频 | 亚洲精品一区二三区不卡 | 亚洲国产精品99久久久久久久久 | 精品视频一区二区三区在线观看 | 午夜视频在线 | 日本超碰 | 国产成人精品区一区二区不卡 | 黑人精品欧美一区二区蜜桃 | 久久综合国产 | 日韩在线国产精品 | 涩涩视频网站在线观看 | 国产精品久久久久一区二区三区 | 男人电影天堂 | 久久精品一级 | 日本亚洲欧美 | 一区二区三区小视频 | 精品国产一区一区二区三亚瑟 | 99re视频| www.久久| 久久伊人精品 | 久精品视频 | 亚洲成人毛片 | 综合国产第二页 | 亚洲国产精品一区二区久久 |