找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2449|回復(fù): 3
收起左側(cè)

基于52單片機(jī)的源代碼改成51單片機(jī)的,知識(shí)有限,請(qǐng)各位大神幫忙看一看怎么改啊謝謝啦

[復(fù)制鏈接]
ID:469810 發(fā)表于 2019-1-19 03:24 | 顯示全部樓層 |閱讀模式
該程序用的是匯編語(yǔ)音,由于知識(shí)有限實(shí)在看不懂,幫忙看一看這個(gè)基于52單片機(jī)的源代碼怎么改成基于51單片機(jī)的啊。這個(gè)代碼是用于汽車(chē)轉(zhuǎn)向燈的一個(gè)控制系統(tǒng)的。
單片機(jī)匯編源碼:
  1.                 ORG   0000H   
  2.                 AJMP START1  
  3.                 ORG  0030H
  4.                 SAME  EQU  4EH
  5. START1:MOV P1,#00H  ;無(wú)輸入時(shí)輸出
  6. START: MOV  A,P2   ;讀P2口數(shù)據(jù)
  7.        ANL  A,#1FH  ;取用P2口的低5位數(shù)據(jù)
  8.             CJNE  A,#1FH,SHIY ;對(duì)P2口低5位數(shù)據(jù)進(jìn)行判斷   
  9.            AJMP  START1
  10. SHIY:         MOV SAME,A  
  11.                 LCALL  YS       ;延時(shí)
  12.                 MOV  A,P2         ;讀P2口的數(shù)據(jù)
  13.                 ANL  A,#1FH        ;取用P2口的低5位數(shù)據(jù)
  14.                 CJNE A,#1FH,SHIY1    ;對(duì)P2口低5位數(shù)據(jù)進(jìn)行判斷  
  15.                 AJMP START1        ;開(kāi)關(guān)沒(méi)有動(dòng)作時(shí)無(wú)輸出
  16. SHIY1:  CJNE A,SAME,START1   
  17.                 CJNE A,#17H,NEXT1  ;P2.3=0時(shí)進(jìn)入左轉(zhuǎn)彎分支  
  18.                 AJMP LEFT
  19. NEXT1: CJNE A,#0FH,NEXT2  ;P2.4=0時(shí)進(jìn)入右轉(zhuǎn)彎分支  
  20.                 AJMP RIGHT
  21. NEXT2: CJNE A,#1DH,NEXT3  ; P2.1=0時(shí)進(jìn)入緊急分支  
  22.                 AJMP EARGE
  23. NEXT3: CJNE A,#1EH,NEXT4   ;P2.0=0時(shí)進(jìn)入剎車(chē)分支  
  24.                  AJMP BRAKE
  25. NEXT4: CJNE A,#16H,NEXT5   ;P2.0=P2.3=0時(shí)進(jìn)入左轉(zhuǎn)彎剎車(chē)分支
  26.            AJMP LEBR
  27. NEXT5: CJNE A,#0EH,NEXT6  ;p2.0=P2.4=0時(shí)進(jìn)入右轉(zhuǎn)彎剎車(chē)分支
  28.            AJMP  RIBR
  29. NEXT6: CJNE A,#1CH,NEXT7   ;P2.0=P2.1=0時(shí)進(jìn)入緊急剎車(chē)分支
  30.        AJMP  BRER
  31. NEXT7: CJNE A,#14H,NEXT8   ;P2.0=P2.1=P2.3=0時(shí)進(jìn)入左轉(zhuǎn)彎緊急剎車(chē)分支
  32.        AJMP  LBE
  33. NEXT8: CJNE A,#0CH,NEXT9  ; P2.0=P2.1=P2.4=0時(shí)進(jìn)入右轉(zhuǎn)彎緊急剎車(chē)分支
  34.        AJMP  RBE
  35. NEXT9: CJNE A,#1BH,NEXT10 ;P2.2=0時(shí)進(jìn)入?糠种
  36.        AJMP  STOP
  37. NEXT10:        AJMP ERROR
  38. LEFT: MOV P1,#2AH   ;左轉(zhuǎn)彎分支
  39.           LCALL Y1s  
  40.           MOV P1,#00H
  41.           LCALL Y1s
  42.           AJMP  START
  43. RIGHT:MOV P1,#54H  ;右轉(zhuǎn)彎分支
  44.           LCALL Y1s
  45.           MOV P1,#00H
  46.           LCALL Y1s
  47.           AJMP START
  48. EARGE: MOV  P1,#7EH ;緊急分支
  49.            LCALL Y1s
  50.            MOV P1,#00H
  51.            LCALL Y1s
  52.            AJMP START
  53. BRAKE: MOV P1,#60H         ;剎車(chē)分支
  54.            AJMP START
  55.            AJMP  LEBR
  56. LEBR: MOV  P1,#6AH       ;左轉(zhuǎn)彎剎車(chē)分支
  57.           LCALL  Y1s  
  58.           MOV P1,#20H   
  59.           LCALL  Y1s  
  60.           AJMP START
  61. RIBR: MOV P1,#74H        ;右轉(zhuǎn)彎剎車(chē)分支
  62.           LCALL  Y1s   
  63.           MOV P1,#40H  
  64.           LCALL  Y1s  
  65.           AJMP START
  66. BRER: MOV P1,#7EH       ;緊急剎車(chē)分支
  67.           LCALL  Y1s   
  68.       MOV P1,#60H  
  69.           LCALL  Y1s  
  70.           AJMP START
  71. LBE: MOV P1,#7EH    ;左轉(zhuǎn)彎緊急剎車(chē)分支
  72.          LCALL  Y1s   
  73.          MOV P1,#20H  
  74.          LCALL  Y1s  
  75.          AJMP START
  76. RBE: MOV P1,#76H    ;右轉(zhuǎn)彎緊急剎車(chē)分支
  77.          LCALL  Y1s   
  78.          MOV P1,#40H   
  79.          LCALL  Y1s  
  80.          AJMP  START
  81. STOP: MOV P1,#66H  ;?糠种
  82.          LCALL  Y100ms
  83.          MOV P1,#00H   
  84.          LCALL  Y100ms  
  85.          AJMP  START
  86. ERROR: MOV P1,#01H
  87.         AJMP  START
  88. YS:  MOV R7,#20H   ;延時(shí)
  89. YS0: MOV R6,#0FFH
  90. YS1: DJNZ R6,YS1   
  91.          DJNZ R7,YS0  
  92.          RET
  93. Y1s:  MOV R7,#04H  ;延時(shí)
  94. Y1s1: MOV  R6,#0FFH
  95. Y1s2: MOV R5,#0FFH   
  96.           DJNZ R5,[        DISCUZ_CODE_0        ]nbsp;  
  97.           DJNZ R6,Y1s2   
  98.           DJNZ R7,Y1s1  
  99.           RET
  100. Y100ms: MOV R7,#66H   ;延時(shí)
  101. Y100ms1:MOV  R6,#0FFH
  102. Y100ms2:DJNZ  R6,Y100ms2  
  103.                 DJNZ  R7,Y100ms1
  104.                 RET
  105.         

復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2019-1-19 14:14 | 顯示全部樓層
這個(gè)如果沒(méi)有用到定時(shí)器/計(jì)數(shù)器 2,也沒(méi)用到128字節(jié)以上的RAM,可以不用改,直接用。
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2019-1-19 14:16 | 顯示全部樓層
51單片機(jī)跟52單片機(jī)有什么區(qū)別,52多個(gè)定時(shí)器2,RAM 51是128,52是256。程序存儲(chǔ)器,51是4K,52是8k。
你的程序沒(méi)用定時(shí)器2,不用改直接用。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2019-1-19 14:23 | 顯示全部樓層
把第四行代碼移到第一行
代碼沒(méi)有使用片上的外設(shè),端口一樣就可以直接下載,基本上很多STC的單片機(jī)都可以直接下載使用,如果延時(shí)不同就改一下延時(shí)子程序就可以了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表