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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5011|回復: 1
收起左側

51單片機21路加熱溫度控制程序(匯編)

[復制鏈接]
ID:70976 發表于 2014-12-26 22:40 | 顯示全部樓層 |閱讀模式
  1. ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  2. ;原理:通過改變加熱管通電和斷電時間比達到控制溫度作用。
  3. ;可以獨立設置21路加熱管通斷的百分比值。
  4. ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  5. ;設置參數方法:同時按下主機面板上的“區域”和“上調”(或“下調”)鍵,
  6. ;調到需要設定參數的區域后,停止按按鍵,然后再同時按下“參數”和“上調”(或“下調”)鍵,
  7. ;設定該區域的參數,參數設定范圍0~100%,當設定參數為0%時關閉加熱管,
  8. ;當設定參數為100%時加熱管常通電,當設定參數為50%時加熱管通斷時間比為1:1(即各50%),
  9. ;其他參數以此類推。
  10. ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

  11.       SC01# EQU P0.0    ;1#輸出
  12.       SC02# EQU P0.1    ;2#輸出,以下雷同,共24路輸出
  13.       SC03# EQU P0.2
  14.       SC04# EQU P0.3
  15.       SC05# EQU P0.4
  16.       SC06# EQU P0.5
  17.       SC07# EQU P0.6
  18.       SC08# EQU P0.7

  19.       SC09# EQU P1.0
  20.       SC10# EQU P1.1
  21.       SC11# EQU P1.2
  22.       SC12# EQU P1.3
  23.       SC13# EQU P1.4
  24.       SC14# EQU P1.5
  25.       SC15# EQU P1.6
  26.       SC16# EQU P1.7

  27.       SC17# EQU P2.0
  28.       SC18# EQU P2.1
  29.       SC19# EQU P2.2
  30.       SC20# EQU P2.3
  31.       SC21# EQU P2.4
  32.       SC22# EQU P2.5
  33.       SC23# EQU P2.6
  34.       SC24# EQU P2.7

  35.       XS1A2 EQU P3.0    ;RXD,P3.0接74LS164 1A2端,用于顯示,不能改變
  36.       XSCLK EQU P3.1    ;TXD,P3.1接74LS164 CLK端,用于顯示,不能改變

  37.       AJQUY EQU P3.2    ;設置區域的按鍵,要同時按下區域鍵和上調或下調鍵方可調節
  38.       AJCSH EQU P3.3    ;設置參數的按鍵,要同時按下參數鍵和上調或下調鍵方可調節
  39.       AJSHT EQU P3.4    ;上調按鍵
  40.       AJXIT EQU P3.5    ;下調按鍵

  41.       SDA   EQU P3.6    ;EEPROM數據傳送口,必須接上拉電阻,否則有時開機不正常
  42.       SCL   EQU P3.7    ;EEPROM時鐘傳送口,必須接上拉電阻,否則有時開機不正常

  43.       KMWDT EQU 0E1H    ;看門狗地址

  44.       ORG  0000H ;程序執行開始地址
  45.       LJMP KS    ;跳至KS
  46.       ORG  0003H ;外中斷0中斷程序入口
  47.       RETI              ;跳至INT_0中斷服務程序
  48.       ORG  000BH        ;定時器T0中斷程序入口
  49.       LJMP INTT0        ;中斷返回
  50.       ORG  0013H ;外中斷1中斷入口
  51.       RETI         ;中斷返回
  52.       ORG  001BH ;定時器T1中斷程序入口
  53.       RETI         ;跳至INTT1中斷服務程序
  54.       ORG  0023H ;串口中斷入口地址
  55.       RETI

  56.       ORG  0200H
  57. ;------------------------------------
  58. ;開機初始化
  59. ;------------------------------------
  60. KS:   MOV KMWDT,#00111100B ;設置看門狗
  61.       MOV R0,#0FFH      ;延時,待電源正常后系統才開始工作
  62.       DJNZ R0,$
  63.       MOV P0,#0FFH
  64.       MOV P1,#0FFH
  65.       MOV P2,#0FFH
  66.       MOV P3,#0FFH
  67.       MOV SP,#70H
  68.       MOV TMOD,#01H    ;設置T0為16位定時器,方式1
  69.       MOV TH0,#0D8H    ;設定T0的定時初值,12M晶振,定時為10ms,
  70.       MOV TL0,#0F0H    ;通斷總時間周期=10ms×100(因為分成100%)=1s
  71.       SETB ET0         ;允許T0中斷
  72.       SETB EA          ;開中斷

  73.       MOV 6FH,#00H     ;6FH為10mS時間到標志,現置零


  74. ;開始運行,調用存儲器保存的數據
  75. ;------------------------------------
  76.       LCALL  READ_DATA ;將EEPROM中原里程數據調入內存

  77. ;------------------------------------
  78.       MOV 48H,#1       ;設定開機后顯示屏顯示1#區域的參數
  79.       LCALL LEDXS1     ;調用顯示程序
  80. ;------------------------------------

  81. ;把各區域內的參數值提取用于控制和顯示
  82.       MOV 50H,30H      ;50H為1#輸出時間參數值緩存區
  83.       MOV 51H,31H      ;51H為2#輸出時間參數值緩存區
  84.       MOV 52H,32H      ;以下以此類推
  85.       MOV 53H,33H
  86.       MOV 54H,34H
  87.       MOV 55H,35H
  88.       MOV 56H,36H
  89.       MOV 57H,37H
  90.       MOV 58H,38H
  91.       MOV 59H,39H

  92.       MOV 5AH,3AH
  93.       MOV 5BH,3BH
  94.       MOV 5CH,3CH
  95.       MOV 5DH,3DH
  96.       MOV 5EH,3EH
  97.       MOV 5FH,3FH
  98.       MOV 60H,40H
  99.       MOV 61H,41H
  100.       MOV 62H,42H
  101.       MOV 63H,43H

  102.       MOV 64H,44H
  103.       MOV 65H,45H
  104.       MOV 66H,46H
  105.       MOV 67H,47H
  106. ;------------------------------------

  107. ;各輸出運行狀態標志置零
  108.       CLR 01H         ;01H為1#輸出運行狀態標志(區分輸出是高電平還是低電平)
  109.       CLR 02H         ;02H為2#輸出運行狀態標志(區分輸出是高電平還是低電平)
  110.       CLR 03H         ;以下以此類推
  111.       CLR 04H
  112.       CLR 05H
  113.       CLR 06H
  114.       CLR 07H
  115.       CLR 08H
  116.       CLR 09H

  117.       CLR 0AH
  118.       CLR 0BH
  119.       CLR 0CH
  120.       CLR 0DH
  121.       CLR 0EH
  122.       CLR 0FH
  123.       CLR 10H
  124.       CLR 11H
  125.       CLR 12H
  126.       CLR 13H

  127.       CLR 14H
  128.       CLR 15H
  129.       CLR 16H
  130.       CLR 17H
  131.       CLR 18H
  132.       SETB TR0         ;啟動T0

  133. ;------------------------------------
  134. ;按鍵處理程序
  135. ;------------------------------------
  136. L1:   JB AJQUY,L5      ;設置區域值
  137.       MOV P0,#0FFH     ;設置區域時關閉所有輸出口
  138.       MOV P1,#0FFH
  139.       MOV P2,#0FFH
  140.       JB AJSHT,L3      ;上調區域,此時同時顯示該區域的參數
  141.       MOV A,48H
  142.       CJNE A,#24,L2    ;檢查調節區域值是否到達24區
  143.       SJMP L0          ;到達24區的停止
  144. L2:   INC 48H          ;調節區域值步進加1
  145.       SJMP L0

  146. L3:   JB AJXIT,L1      ;下調區域,此時同時顯示該區域的參數
  147.       MOV A,48H
  148.       CJNE A,#1,L4     ;檢查調節區域值是否到達1區
  149.       SJMP L0          ;到達1區的停止
  150. L4:   DEC 48H          ;調節區域值步進減1

  151. L0:   MOV A,#2FH       ;30H起開始放參數值,1區對應30H,2區對應31H,其他雷同
  152.       ADD A,48H        ;48H放當前區域值
  153.       MOV R1,0E0H      ;0E0H即為A的地址
  154.       MOV 49H,@R1      ;49H放當前區域的參數值
  155.       LCALL LEDXS1     ;調用顯示子程序
  156.       LCALL YS1        ;延時
  157.       SJMP L1          ;返回再執行
  158. ;_____________________________________

  159. L5:   JB AJCSH,L00     ;設置參數值
  160.       MOV P0,#0FFH     ;設置區域時關閉所有輸出口
  161.       MOV P1,#0FFH
  162.       MOV P2,#0FFH
  163.       MOV A,#2FH       ;30H起開始放參數值,因為以下要加1,所以從2FH開始
  164.       ADD A,48H
  165.       MOV R1,0E0H      ;0E0H即為A的地址
  166.       MOV 49H,@R1
  167.       JB AJSHT,L7      ;上調參數

  168.       MOV A,49H
  169.       CJNE A,#100,L6   ;參數等于100%不能再調
  170.       SJMP L0
  171. L6:   INC 49H          ;參數調節步進加1
  172.       SJMP L9

  173. L7:   JB AJXIT,L1      ;下調參數
  174.       MOV A,49H
  175.       CJNE A,#0,L8     ;參數等于0%不能再調
  176.       SJMP L0
  177. L8:   DEC 49H          ;參數調節步進減1
  178. L9:   MOV @R1,49H
  179.       LCALL LEDXS1     ;調用顯示子程序
  180.       LCALL WRITE_DATA ;把參數值數據存入EEPROM,防止掉電數據丟失
  181.       LCALL YS1        ;延時
  182.       SJMP L1          ;返回再執行

  183. ;------------------------------------
  184. ;輸出
  185. ;------------------------------------
  186. L00:  MOV A,30H       ;檢查1#參數是否為0%
  187.       JNZ L01         ;1#參數不為0%時繼續檢測
  188.       SETB SC01#      ;1#參數為0%時關閉1#輸出
  189.       SJMP L10        ;關閉1#輸出后轉檢測2#端口
  190. L01:  CJNE A,#100,L02 ;檢查1#參數是否為100%
  191.       CLR SC01#       ;1#參數為100%時1#有輸出
  192.       SJMP L10        ;接通1#輸出后轉檢測2#端口
  193. L02:  JB 01H,L03      ;判斷1#輸出是高電平還是低電平
  194.       CLR SC01#       ;1#輸出是高電平的且不為0%或100#的按參數運行
  195.       DEC 50H         ;參數減法,直到為0
  196.       MOV A,50H
  197.       JNZ L10         ;參數減到0,未到0的轉檢測2#端口
  198.       CLR C           ;參數減到0,開始轉為關閉,清空C
  199.       MOV A,#100      ;關閉的時間參數=100-原設定的參數
  200.       SUBB A,30H      ;原設定的參數放在30H
  201.       MOV 50H,A       ;關閉的時間參數放在50H
  202.       SETB 01H        ;置位,為1表示輸出狀態由高電平轉為低電平
  203. L03:  SETB SC01#      ;按設定的時間參數高電平輸出完后轉為低電平輸出
  204.       DEC 50H         ;參數減法,直到為0
  205.       MOV A,50H
  206.       JNZ L10         ;參數減到0,未到0的轉檢測2#端口
  207.       MOV 50H,30H     ;低電平按設定的時間參數輸出完后返回轉為高電平輸出
  208.       CLR 01H         ;清標志位,為0表示輸出狀態由低電平轉為高電平

  209. L10:  MOV A,31H       ;以下以此類推
  210.       JNZ L11
  211.       SETB SC02#
  212.       SJMP L20
  213. L11:  CJNE A,#100,L12
  214.       CLR SC02#
  215.       SJMP L20
  216. L12:  JB 02H,L13
  217.       CLR SC02#
  218.       DEC 51H
  219.       MOV A,51H
  220.       JNZ L20
  221.       CLR C
  222.       MOV A,#100
  223.       SUBB A,31H
  224.       MOV 51H,A
  225.       SETB 02H
  226. L13:  SETB SC02#
  227.       DEC 51H
  228.       MOV A,51H
  229.       JNZ L20
  230.       MOV 51H,31H
  231.       CLR 02H

  232. L20:  MOV A,32H
  233.       JNZ L21
  234.       SETB SC03#
  235.       SJMP L30
  236. L21:  CJNE A,#100,L22
  237.       CLR SC03#
  238.       SJMP L30
  239. L22:  JB 03H,L23
  240.       CLR SC03#
  241.       DEC 52H
  242.       MOV A,52H
  243.       JNZ L30
  244.       CLR C
  245.       MOV A,#100
  246.       SUBB A,32H
  247.       MOV 52H,A
  248.       SETB 03H
  249. L23:  SETB SC03#
  250.       DEC 52H
  251.       MOV A,52H
  252.       JNZ L30
  253.       MOV 52H,32H
  254.       CLR 03H

  255. L30:  MOV A,33H
  256.       JNZ L31
  257.       SETB SC04#
  258.       SJMP L40
  259. L31:  CJNE A,#100,L32
  260.       CLR SC04#
  261.       SJMP L40
  262. L32:  JB 04H,L33
  263.       CLR SC04#
  264.       DEC 53H
  265.       MOV A,53H
  266.       JNZ L40
  267.       CLR C
  268.       MOV A,#100
  269.       SUBB A,33H
  270.       MOV 53H,A
  271.       SETB 04H
  272. L33:  SETB SC04#
  273.       DEC 53H
  274.       MOV A,53H
  275.       JNZ L40
  276.       MOV 53H,33H
  277.       CLR 04H

  278. L40:  MOV A,34H
  279.       JNZ L41
  280.       SETB SC05#
  281.       SJMP L50
  282. L41:  CJNE A,#100,L42
  283.       CLR SC05#
  284.       SJMP L50
  285. L42:  JB 05H,L43
  286.       CLR SC05#
  287.       DEC 54H
  288.       MOV A,54H
  289.       JNZ L50
  290.       CLR C
  291.       MOV A,#100
  292.       SUBB A,34H
  293.       MOV 54H,A
  294.       SETB 05H
  295. L43:  SETB SC05#
  296.       DEC 54H
  297.       MOV A,54H
  298.       JNZ L50
  299.       MOV 54H,34H
  300.       CLR 05H

  301. L50:  MOV A,35H
  302.       JNZ L51
  303.       SETB SC06#
  304.       SJMP L60
  305. L51:  CJNE A,#100,L52
  306.       CLR SC06#
  307.       SJMP L60
  308. L52:  JB 06H,L53
  309.       CLR SC06#
  310.       DEC 55H
  311.       MOV A,55H
  312.       JNZ L60
  313.       CLR C
  314.       MOV A,#100
  315.       SUBB A,35H
  316.       MOV 55H,A
  317.       SETB 06H
  318. L53:  SETB SC06#
  319.       DEC 55H
  320.       MOV A,55H
  321.       JNZ L60
  322.       MOV 55H,35H
  323.       CLR 06H

  324. L60:  MOV A,36H
  325.       JNZ L61
  326.       SETB SC07#
  327.       SJMP L70
  328. L61:  CJNE A,#100,L62
  329.       CLR SC07#
  330.       SJMP L70
  331. L62:  JB 07H,L63
  332.       CLR SC07#
  333.       DEC 56H
  334.       MOV A,56H
  335.       JNZ L70
  336.       CLR C
  337.       MOV A,#100
  338.       SUBB A,36H
  339.       MOV 56H,A
  340.       SETB 07H
  341. L63:  SETB SC07#
  342.       DEC 56H
  343.       MOV A,56H
  344.       JNZ L70
  345.       MOV 56H,36H
  346.       CLR 07H

  347. L70:  MOV A,37H
  348.       JNZ L71
  349.       SETB SC08#
  350.       SJMP L80
  351. L71:  CJNE A,#100,L72
  352.       CLR SC08#
  353.       SJMP L80
  354. L72:  JB 08H,L73
  355.       CLR SC08#
  356.       DEC 57H
  357.       MOV A,57H
  358.       JNZ L80
  359.       CLR C
  360.       MOV A,#100
  361.       SUBB A,37H
  362.       MOV 57H,A
  363.       SETB 08H
  364. L73:  SETB SC08#
  365.       DEC 57H
  366.       MOV A,57H
  367.       JNZ L80
  368.       MOV 57H,37H
  369.       CLR 08H

  370. L80:  MOV A,38H
  371.       JNZ L81
  372.       SETB SC09#
  373.       SJMP L90
  374. L81:  CJNE A,#100,L82
  375.       CLR SC09#
  376.       SJMP L90
  377. L82:  JB 09H,L83
  378.       CLR SC09#
  379.       DEC 58H
  380.       MOV A,58H
  381.       JNZ L90
  382.       CLR C
  383.       MOV A,#100
  384.       SUBB A,38H
  385.       MOV 58H,A
  386.       SETB 09H
  387. L83:  SETB SC09#
  388.       DEC 58H
  389.       MOV A,58H
  390.       JNZ L90
  391.       MOV 58H,38H
  392.       CLR 09H

  393. L90:  MOV A,39H
  394.       JNZ L91
  395.       SETB SC10#
  396.       SJMP LA0
  397. L91:  CJNE A,#100,L92
  398.       CLR SC10#
  399.       SJMP LA0
  400. L92:  JB 0AH,L93
  401.       CLR SC10#
  402.       DEC 59H
  403.       MOV A,59H
  404.       JNZ LA0
  405.       CLR C
  406.       MOV A,#100
  407.       SUBB A,39H
  408.       MOV 59H,A
  409.       SETB 0AH
  410. L93:  SETB SC10#
  411.       DEC 59H
  412.       MOV A,59H
  413.       JNZ LA0
  414.       MOV 59H,39H
  415.       CLR 0AH

  416. LA0:  MOV A,3AH
  417.       JNZ LA1
  418.       SETB SC11#
  419.       SJMP LB0
  420. LA1:  CJNE A,#100,LA2
  421.       CLR SC11#
  422.       SJMP LB0
  423. LA2:  JB 0BH,LA3
  424.       CLR SC11#
  425.       DEC 5AH
  426.       MOV A,5AH
  427.       JNZ LB0
  428.       CLR C
  429.       MOV A,#100
  430.       SUBB A,3AH
  431.       MOV 5AH,A
  432.       SETB 0BH
  433. LA3:  SETB SC11#
  434.       DEC 5AH
  435.       MOV A,5AH
  436.       JNZ LB0
  437.       MOV 5AH,3AH
  438.       CLR 0BH

  439. LB0:  MOV A,3BH
  440.       JNZ LB1
  441.       SETB SC12#
  442.       SJMP LC0
  443. LB1:  CJNE A,#100,LB2
  444.       CLR SC12#
  445.       SJMP LC0
  446. LB2:  JB 0CH,LB3
  447.       CLR SC12#
  448.       DEC 5BH
  449.       MOV A,5BH
  450.       JNZ LC0
  451.       CLR C
  452.       MOV A,#100
  453.       SUBB A,3BH
  454.       MOV 5BH,A
  455.       SETB 0CH
  456. LB3:  SETB SC12#
  457.       DEC 5BH
  458.       MOV A,5BH
  459.       JNZ LC0
  460.       MOV 5BH,3BH
  461.       CLR 0CH

  462. LC0:  MOV A,3CH
  463.       JNZ LC1
  464.       SETB SC13#
  465.       SJMP LD0
  466. LC1:  CJNE A,#100,LC2
  467.       CLR SC13#
  468.       SJMP LD0
  469. LC2:  JB 0DH,LC3
  470.       CLR SC13#
  471.       DEC 5CH
  472.       MOV A,5CH
  473.       JNZ LD0
  474.       CLR C
  475.       MOV A,#100
  476.       SUBB A,3CH
  477.       MOV 5CH,A
  478.       SETB 0DH
  479. LC3:  SETB SC13#
  480.       DEC 5CH
  481.       MOV A,5CH
  482.       JNZ LD0
  483.       MOV 5CH,3CH
  484.       CLR 0DH

  485. LD0:  MOV A,3DH
  486.       JNZ LD1
  487.       SETB SC14#
  488.       SJMP LE0
  489. LD1:  CJNE A,#100,LD2
  490.       CLR SC14#
  491.       SJMP LE0
  492. LD2:  JB 0EH,LD3
  493.       CLR SC14#
  494.       DEC 5DH
  495.       MOV A,5DH
  496.       JNZ LE0
  497.       CLR C
  498.       MOV A,#100
  499.       SUBB A,3DH
  500.       MOV 5DH,A
  501.       SETB 0EH
  502. LD3:  SETB SC14#
  503.       DEC 5DH
  504.       MOV A,5DH
  505.       JNZ LE0
  506.       MOV 5DH,3DH
  507.       CLR 0EH

  508. LE0:  MOV A,3EH
  509.       JNZ LE1
  510.       SETB SC15#
  511.       SJMP LF0
  512. LE1:  CJNE A,#100,LE2
  513.       CLR SC15#
  514.       SJMP LF0
  515. LE2:  JB 0FH,LE3
  516.       CLR SC15#
  517.       DEC 5EH
  518.       MOV A,5EH
  519.       JNZ LF0
  520.       CLR C
  521.       MOV A,#100
  522.       SUBB A,3EH
  523.       MOV 5EH,A
  524.       SETB 0FH
  525. LE3:  SETB SC15#
  526.       DEC 5EH
  527.       MOV A,5EH
  528.       JNZ LF0
  529.       MOV 5EH,3EH
  530.       CLR 0FH

  531. LF0:  MOV A,3FH
  532.       JNZ LF1
  533.       SETB SC16#
  534.       SJMP LFA
  535. LF1:  CJNE A,#100,LF2
  536.       CLR SC16#
  537.       SJMP LFA
  538. LF2:  JB 10H,LF3
  539.       CLR SC16#
  540.       DEC 5FH
  541.       MOV A,5FH
  542.       JNZ LFA
  543.       CLR C
  544.       MOV A,#100
  545.       SUBB A,3FH
  546.       MOV 5FH,A
  547.       SETB 10H
  548. LF3:  SETB SC16#
  549.       DEC 5FH
  550.       MOV A,5FH
  551.       JNZ LFA
  552.       MOV 5FH,3FH
  553.       CLR 10H

  554. LFA:  MOV A,40H
  555.       JNZ LF10
  556.       SETB SC17#
  557.       SJMP LFB
  558. LF10: CJNE A,#100,LF11
  559.       CLR SC17#
  560.       SJMP LFB
  561. LF11: JB 11H,LF12
  562.       CLR SC17#
  563.       DEC 60H
  564.       MOV A,60H
  565.       JNZ LFB
  566.       CLR C
  567.       MOV A,#100
  568.       SUBB A,40H
  569.       MOV 60H,A
  570.       SETB 11H
  571. LF12: SETB SC17#
  572.       DEC 60H
  573.       MOV A,60H
  574.       JNZ LFB
  575.       MOV 60H,40H
  576.       CLR 11H

  577. LFB:  MOV A,41H
  578.       JNZ LF20
  579.       SETB SC18#
  580.       SJMP LFC
  581. LF20: CJNE A,#100,LF21
  582.       CLR SC18#
  583.       SJMP LFC
  584. LF21: JB 12H,LF22
  585.       CLR SC18#
  586.       DEC 61H
  587.       MOV A,61H
  588.       JNZ LFC
  589.       CLR C
  590.       MOV A,#100
  591.       SUBB A,41H
  592.       MOV 61H,A
  593.       SETB 12H
  594. LF22: SETB SC18#
  595.       DEC 61H
  596.       MOV A,61H
  597.       JNZ LFC
  598.       MOV 61H,41H
  599.       CLR 12H

  600. LFC:  MOV A,42H
  601.       JNZ LF30
  602.       SETB SC19#
  603.       SJMP LFD
  604. LF30: CJNE A,#100,LF31
  605.       CLR SC19#
  606.       SJMP LFD
  607. LF31: JB 13H,LF32
  608.       CLR SC19#
  609.       DEC 62H
  610.       MOV A,62H
  611.       JNZ LFD
  612.       CLR C
  613.       MOV A,#100
  614.       SUBB A,42H
  615.       MOV 62H,A
  616.       SETB 13H
  617. LF32: SETB SC19#
  618.       DEC 62H
  619.       MOV A,62H
  620.       JNZ LFD
  621.       MOV 62H,42H
  622.       CLR 13H

  623. LFD:  MOV A,43H
  624.       JNZ LF40
  625.       SETB SC20#
  626.       SJMP LFE
  627. LF40: CJNE A,#100,LF41
  628.       CLR SC20#
  629.       SJMP LFE
  630. LF41: JB 14H,LF42
  631.       CLR SC20#
  632.       DEC 63H
  633.       MOV A,63H
  634.       JNZ LFE
  635.       CLR C
  636.       MOV A,#100
  637.       SUBB A,43H
  638.       MOV 63H,A
  639.       SETB 14H
  640. LF42: SETB SC20#
  641.       DEC 63H
  642.       MOV A,63H
  643.       JNZ LFE
  644.       MOV 63H,43H
  645.       CLR 14H


  646. LFE:  MOV A,44H
  647.       JNZ LF50
  648.       SETB SC21#
  649.       SJMP LFF
  650. LF50: CJNE A,#100,LF51
  651.       CLR SC21#
  652.       SJMP LFF
  653. LF51: JB 15H,LF52
  654.       CLR SC21#
  655.       DEC 64H
  656.       MOV A,64H
  657.       JNZ LFF
  658.       CLR C
  659.       MOV A,#100
  660.       SUBB A,44H
  661.       MOV 64H,A
  662.       SETB 15H
  663. LF52: SETB SC21#
  664.       DEC 64H
  665.       MOV A,64H
  666.       JNZ LFF
  667.       MOV 64H,44H
  668.       CLR 15H

  669. LFF:  MOV A,45H
  670.       JNZ LF60
  671.       SETB SC22#
  672.       SJMP LFG
  673. LF60: CJNE A,#100,LF61
  674.       CLR SC22#
  675.       SJMP LFG
  676. LF61: JB 16H,LF62
  677.       CLR SC22#
  678.       DEC 65H
  679.       MOV A,65H
  680.       JNZ LFG
  681.       CLR C
  682.       MOV A,#100
  683.       SUBB A,45H
  684.       MOV 65H,A
  685.       SETB 16H
  686. LF62: SETB SC22#
  687.       DEC 65H
  688.       MOV A,65H
  689.       JNZ LFG
  690.       MOV 65H,45H
  691.       CLR 16H

  692. LFG:  MOV A,46H
  693.       JNZ LF70
  694.       SETB SC23#
  695.       SJMP LFH
  696. LF70: CJNE A,#100,LF71
  697.       CLR SC23#
  698.       SJMP LFH
  699. LF71: JB 17H,LF72
  700.       CLR SC23#
  701.       DEC 66H
  702.       MOV A,66H
  703.       JNZ LFH
  704.       CLR C
  705.       MOV A,#100
  706.       SUBB A,46H
  707.       MOV 66H,A
  708.       SETB 17H
  709. LF72: SETB SC23#
  710.       DEC 66H
  711.       MOV A,66H
  712.       JNZ LFH
  713.       MOV 66H,46H
  714.       CLR 17H

  715. LFH:  MOV A,47H
  716.       JNZ LF80
  717.       SETB SC24#
  718.       SJMP LFI
  719. LF80: CJNE A,#100,LF81
  720.       CLR SC24#
  721.       SJMP LFI
  722. LF81: JB 18H,LF82
  723.       CLR SC24#
  724.       DEC 67H
  725.       MOV A,67H
  726.       JNZ LFI
  727.       CLR C
  728.       MOV A,#100
  729.       SUBB A,47H
  730.       MOV 67H,A
  731.       SETB 18H
  732. LF82: SETB SC24#
  733.       DEC 67H
  734.       MOV A,67H
  735.       JNZ LFI
  736.       MOV 67H,47H
  737.       CLR 18H
  738. ;------------------------------------
  739. ;等待10mS到
  740. ;------------------------------------
  741. LFI:  LCALL DISP          ;調用顯示程序
  742. L123: MOV A,6FH
  743.       MOV KMWDT,#00111100B;設置看門狗
  744.       CJNE A,#01H,L123
  745.       MOV 6FH,#00H
  746.       LJMP L1

  747. ;------------------------------------
  748. z;顯示轉化程序,48H放區域值,49H放到參數值,轉換后6AH放區域值高位,
  749. ;6BH放區域值低位,6CH、6DH、6EH放參數值,
  750. ;------------------------------------
  751. LEDXS1:MOV B,#10          ;顯示程序,為拆分計數值送顯示器作準備
  752.       MOV A,48H           ;余數作個位
  753.       DIV AB              ;將計數值除以10,高位進A,余數進B
  754.       MOV 6BH,B
  755.       JNZ LOOP1
  756.       MOV 6AH,#10
  757.       SJMP LOOP2
  758. LOOP1:MOV 6AH,A

  759. LOOP2:MOV A,#2FH
  760.       ADD A,48H
  761.       MOV R1,0E0H
  762.       MOV 49H,@R1
  763.       MOV B,#10           ;顯示程序,為拆分計數值送顯示器作準備
  764.       MOV A,49H           ;余數作個位
  765.       DIV AB              ;將計數值除以10,高位進A,余數進B
  766.       MOV 6EH,B
  767.       MOV B,#10
  768.       DIV AB
  769.       MOV 6DH,B
  770.       JNZ LOOP3
  771.       MOV 6CH,#10
  772.       SJMP LOOP4
  773. LOOP3:MOV 6CH,A
  774. LOOP4:LCALL DISP
  775.       RET

  776. ;------------------------------------
  777. ;顯示程序
  778. ;------------------------------------

  779. DISP: SETB XS1A2          ;P3.0端口置1
  780.       SETB XSCLK          ;P3.1端口置1
  781.       MOV SCON,#00H       ;初始化串行口方式0
  782.       MOV R2,#05H         ;顯示5位數
  783.       MOV R1,#6EH         ;60H-65H為顯示緩沖區
  784.       MOV DPTR,#SETTAB    ;字形表的入口地址
  785. L00P: MOV A,@R1           ;取最高位的待顯示數據
  786.       MOVC A,@A+DPTR      ;查表獲取字形碼
  787.       MOV SBUF,A          ;送串口顯示
  788. DELAY:JNB TI,DELAY        ;等待發送完畢
  789.       CLR TI              ;清發送標志
  790.       DEC R1              ;指針下移一位,準備取下一個待顯示數
  791.       DJNZ R2,L00P        ;直到6個數據全顯示完。
  792.       CLR XS1A2           ;P3.0端口置0
  793.       CLR XSCLK           ;P3.1端口置0
  794.       RET
  795. SETTAB:DB 03H 9FH 25H 0DH 99H 49H 41H 1FH 01H 09H 0FFH

  796.                           ; 0 1 2 3 4 5 6 7 8 9 消隱碼

  797. ;------------------------------------
  798. ;10mS時間中斷
  799. ;------------------------------------

  800. INTT0:PUSH ACC            ;10mS時間中斷
  801.       PUSH PSW
  802.       MOV TH0,#0D8H       ;重置時間參數為10mS(晶振為12M)
  803.       MOV TL0,#0F0H
  804.       MOV KMWDT,#00111100B;設置看門狗
  805.       MOV 6FH,#01H        ;6FH為10mS時間到標志
  806.       POP PSW
  807.       POP ACC
  808.       RETI


  809. YS1:  MOV R6,#70H         ;延時子程序
  810. Y10:  MOV R7,#0FFH
  811. Y11:  NOP
  812.       NOP
  813.       NOP
  814.       DJNZ R7,Y11
  815.       MOV KMWDT,#00111100B;設置看門狗
  816.       DJNZ R6,Y10
  817.       RET

  818. ;------------------------------------
  819. ;EEPROM操作程序
  820. ;------------------------------------
  821. ;-----------------------------------------------------
  822. ;寫N字節數據子程序
  823. ;-----------------------------------------------------
  824. WRITE_DATA:
  825.          MOV R0,#00H         ;數據寫入首地址
  826.          MOV R1,#30H         ;
  827. WR_LOOP: MOV B,@R1
  828.          LCALL WRITE_BYTE    ;將查表結果寫入24C02
  829.          INC R0              ;地址+1
  830.          INC R1
  831.          MOV KMWDT,#00111100B;設置看門狗
  832.          CJNE R1,#48H,WR_LOOP;24個數寫入完畢?
  833.          RET

  834. ;-----------------------------------------------------
  835. ;讀N字節數據子程序
  836. ;從24C02讀出數據
  837. ;-----------------------------------------------------

  838. READ_DATA:
  839.          MOV R0,#00H         ;設定讀取的初始地址
  840.          MOV R1,#30H         ;
  841. RE_LOOP: LCALL READ_BYTE     ;讀EEPROM
  842.          MOV KMWDT,#00111100B;設置看門狗
  843.          LCALL STOP
  844.          MOV @R1,A
  845.          INC R0              ;地址+1
  846.          INC R1
  847.          CJNE R1,#48H,RE_LOOP;24個數寫入完畢?
  848.          RET

  849. ;----------------------------------------------------
  850. ;寫操作子程序
  851. ;輸入參數: R0---要寫入的地址,B---要寫入的數據
  852. ;----------------------------------------------------
  853. WRITE_BYTE:
  854.        LCALL START

  855.        MOV A,#0A0H
  856.        LCALL  SENDBYTE
  857.        LCALL  WAITACK
  858.        MOV KMWDT,#00111100B ;設置看門狗

  859.        MOV A,R0
  860.        LCALL SENDBYTE
  861.        LCALL  WAITACK

  862.        MOV A,B
  863.        LCALL SENDBYTE
  864.        LCALL  WAITACK
  865.        LCALL STOP

  866.        LCALL DELAY_5MS      ;每寫入1個字節,延時若干MS
  867.        RET
  868. ;----------------------------------------------------
  869. ;讀操作子程序
  870. ;輸入參數:R0---要讀的字節地址,
  871. ;輸出參數: A---結果
  872. ;----------------------------------------------------
  873. READ_BYTE:
  874.        LCALL START
  875.        MOV A,#0A0H
  876.        LCALL SENDBYTE
  877.        LCALL  WAITACK

  878.        MOV A,R0
  879.        LCALL SENDBYTE
  880.        LCALL  WAITACK

  881.        LCALL START
  882.        MOV A,#0A1H
  883.        LCALL SENDBYTE
  884.        LCALL  WAITACK
  885.        LCALL  RCVBYTE
  886.        RET
  887. ;-----------------------------------------------------
  888. ;從IIC總線上接收一個字節數據
  889. ;出口參數:A---接收數據存放在A中
  890. ;-----------------------------------------------------
  891. RCVBYTE:
  892.        MOV R7,#08        ;一個字節共接收8位數據
  893.        CLR  A
  894.        SETB  SDA         ;釋放SDA數據線
  895. R_BYTE:
  896.        CLR  SCL
  897.        NOP
  898.        NOP
  899.        NOP
  900.        NOP
  901.        SETB SCL          ;啟動一個時鐘周期,讀總線
  902.        NOP
  903.        NOP
  904.        NOP
  905.        NOP
  906.        MOV C,SDA         ;將SDA狀態讀入C
  907.        RLC A             ;結果移入A
  908.        SETB  SDA         ;釋放SDA數據線
  909.        DJNZ R7,R_BYTE    ;判斷8位數據是否接收完全?
  910.        RET
  911. ;----------------------------------------------------
  912. ;向IIC總線發送一個字節數據
  913. ;入口參數:A---待發送數據存放在A中
  914. ;----------------------------------------------------
  915. SENDBYTE:
  916.        MOV R7,#08
  917. S_BYTE:
  918.        RLC A
  919.        MOV SDA,C
  920.        SETB SCL
  921.        NOP
  922.        NOP
  923.        NOP
  924.        NOP
  925.        CLR SCL
  926.        DJNZ R7,S_BYTE   ;8位發送完畢?
  927.        RET
  928. ;-----------------------------------------------------
  929. ;等待應答信號
  930. ;等待從機返回一個響應信號
  931. ;-----------------------------------------------------
  932. WAITACK:
  933.        CLR  SCL
  934.        SETB SDA         ;釋放SDA信號線
  935.        NOP
  936.        NOP
  937.        SETB SCL
  938.        NOP
  939.        NOP
  940.        NOP
  941.        MOV C,SDA
  942.        JC  WAITACK      ;SDA為低電平,返回了響應信號
  943.        CLR  SDA
  944.        CLR  SCL
  945.        RET
  946. ;----------------------------------------------------
  947. ;啟動信號子程序
  948. ;----------------------------------------------------
  949. START:
  950.        SETB SDA
  951.        SETB SCL
  952.        NOP
  953.        CLR SDA
  954.        NOP
  955.        NOP
  956.        NOP
  957.        NOP
  958.        CLR SCL
  959.        RET
  960. ;----------------------------------------------------
  961. ;停止信號子程序
  962. ;----------------------------------------------------
  963. STOP:  MOV KMWDT,#00111100B;設置看門狗
  964.        CLR SDA
  965.        NOP
  966.        SETB SCL
  967.        NOP
  968.        NOP
  969.        NOP
  970.        NOP
  971.        SETB SDA
  972.        NOP
  973.        NOP
  974.        CLR  SCL
  975.        CLR  SDA
  976.        RET
  977. ;----------------------------------------------------
  978. ;延時5MS子程序
  979. ;輸入參數:5MS
  980. ;輸出參數: 無
  981. ;影響資源: R5,R6等
  982. ;----------------------------------------------------
  983. DELAY_5MS:
  984.       MOV R6,#10
  985. DE_LP:
  986.       MOV R5,#250
  987.       DJNZ R5,$
  988.       MOV KMWDT,#00111100B;設置看門狗
  989.       DJNZ R6,DE_LP
  990.       RET


  991. ;------------------------------------
  992. ;軟件陷阱
  993. ;------------------------------------
  994.       ORG 0B00H           ;軟件陷阱
  995.       NOP
  996.       NOP
  997.       NOP
  998.       LJMP KS   

  999.       END
復制代碼


回復

使用道具 舉報

ID:7485 發表于 2014-12-29 19:36 | 顯示全部樓層
有些地方使用循環應該可以精簡代碼。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本精品视频 | 中文字幕免费在线 | 欧美日韩一区二区视频在线观看 | 欧美一级二级视频 | www成年人视频 | 美女在线国产 | 久久国产精品免费一区二区三区 | 男人亚洲天堂 | 嫩草网 | 亚洲精品久久 | 亚洲最大看片网站 | 亚洲第一区久久 | 免费午夜视频 | 国产精品久久久久久久久久久久久 | 99re在线视频 | 国产区免费视频 | 精品国产乱码久久久久久丨区2区 | 亚洲网站免费看 | 在线观看av网站 | 日韩中文字幕一区二区 | 午夜a v电影| www.色综合| 亚洲精品色 | 久久精品久久久久久 | 91精品在线播放 | 中文字幕在线视频免费视频 | 国产高清精品在线 | 亚洲精品久久久久中文字幕欢迎你 | 在线观看av不卡 | 国产亚洲精品久久19p | 国产片侵犯亲女视频播放 | 国产区一区 | 免费国产一区 | 网络毛片 | 午夜精品久久久久久久久久久久 | 99re热这里只有精品视频 | 一区二区三区四区不卡视频 | 97在线观视频免费观看 | 亚洲一区二区精品视频在线观看 | 欧美一区二区三区免费在线观看 | 亚洲一区中文字幕 |