欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開始

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

單片機(jī)匯編語(yǔ)言的直流電機(jī)三極管放大調(diào)速數(shù)碼管不亮

[復(fù)制鏈接]
ID:461851 發(fā)表于 2019-1-10 09:23 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png

單片機(jī)源程序如下:

  1. ;AD轉(zhuǎn)換的數(shù)據(jù)在20H-25H,讀出的數(shù)據(jù)在24H
  2. ACK BIT 20H.0     ;應(yīng)答標(biāo)志位ACK=0表示無(wú)應(yīng)答
  3. SCL BIT P2.0      ;時(shí)鐘線
  4. SDA BIT P2.1          ;數(shù)據(jù)線
  5. WADD EQU 21H      ;器件地址(從地址)
  6. SUBD EQU 22H      ;器件內(nèi)部地址(子地址)
  7. NUMBR EQU 23H     ;需讀取的字節(jié)數(shù)
  8. RDATA EQU 25H     ;讀出數(shù)據(jù)的存放首地址
  9.        
  10.        
  11. QJCSH:        MOV 20H,#00H
  12.                 MOV 21H,#00H
  13.                 MOV 22H,#00H
  14.                 MOV 23H,#00H
  15.                 MOV 24H,#00H
  16.                 MOV 25H,#00H
  17.                 MOV 30H,#00H
  18.                 MOV 31H,#00H
  19.                 MOV 32H,#00H
  20.                 MOV 33H,#00H
  21.                 MOV TMOD,#51H
  22.                 MOV TL0,#00H
  23.                 MOV TH0,#4CH
  24.                 MOV TL1,#00H
  25.                 MOV TH1,#00H
  26.                 SETB EA
  27.                 SETB ET0
  28.                 SETB ET1
  29.                 RET
  30.                 LJMP START
  31.                 ORG 000BH
  32.                 LJMP IT0P
  33.                 ORG 001BH
  34.                 LJMP IT1P
  35.                 ORG 0100H
  36. START:        MOV SP,#60H
  37.                 MOV SCON,#00H
  38.                 LCALL QJCSH;???
  39.                   
  40. ;ad轉(zhuǎn)換子程序
  41. DQAD:        MOV WADD,#90H     ;寫入PCF8591的地址
  42.                 MOV SUBD,#40H      ;寫入PCF8591的控制字
  43.                 MOV NUMBR,#1       ;寫入需讀取的字節(jié)數(shù)
  44.                 MOV RDATA,#24H     ;送入首地址
  45.                 LCALL READI2C     ;讀PCF8591子程序
  46.                 MOV A,24H
  47. ;從I2C總線讀取N個(gè)字節(jié)數(shù)據(jù)子程序
  48. READI2C:LCALL STARTI2C     ;啟動(dòng)I2C總線
  49.                 MOV A,WADD         ;送入器件地址
  50.                 LCALL WI2C         ;向I2C總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)子程序
  51.                 LCALL RACK         ;讀取從機(jī)應(yīng)答子程序
  52.                 JNB ACK,ROUT       ;判斷從機(jī)有無(wú)應(yīng)答ACK=0則無(wú)應(yīng)答
  53.                 MOV A,SUBD         ;?送入器件內(nèi)部地址
  54.                 LCALL WI2C
  55.                 LCALL RACK
  56.                 LCALL STARTI2C
  57.                 MOV A,WADD  
  58.                 INC A         
  59.                 LCALL WI2C
  60.                 LCALL RACK  
  61.                 JNB ACK,READI2C  
  62.                 MOV R0,RDATA      
  63. RI2C2:        LCALL RI2C
  64.                 MOV @R0,A  
  65.                 DJNZ NUMBR,RI2C1   
  66.                 LCALL NMACK         
  67. ROUT:        LCALL STOPI2C   
  68.                 MOV RDATA,#24H
  69.                 RET  
  70. RI2C1:        LCALL MACK     
  71.                 INC R0  
  72.                 SJMP RI2C2

  73. ;I2C?總線啟動(dòng)子程序
  74. STARTI2C:SETB SDA
  75.                 SETB SCL
  76.                 NOP
  77.                 NOP
  78.                 NOP
  79.                 NOP
  80.                 NOP  
  81.                 CLR SDA
  82.                 NOP
  83.                 NOP
  84.                 NOP
  85.                 NOP
  86.                 NOP  
  87.                 CLR SCL
  88.                 RET   

  89. ;I2C總線停止子程序
  90. STOPI2C:CLR SDA
  91.                 SETB SCL
  92.                 NOP
  93.                 NOP
  94.                 NOP
  95.                 NOP
  96.                 NOP  
  97.                 SETB SDA
  98.                 RET   

  99. ;主機(jī)應(yīng)答子程序
  100. MACK:        CLR SDA
  101.                 SETB SCL
  102.                 NOP
  103.                 NOP
  104.                 NOP
  105.                 NOP
  106.                 NOP  
  107.                 CLR SCL
  108.                 RET   

  109. ;主機(jī)非應(yīng)答子程序
  110. NMACK:  SETB SDA
  111.                 SETB SCL
  112.                 NOP
  113.                 NOP
  114.                 NOP
  115.                 NOP
  116.                 NOP  
  117.                 CLR SCL
  118.                 RET   

  119. ;向I2C總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)子程序
  120. WI2C:        MOV R7,#8
  121. WLP:         RLC A
  122.                 MOV SDA,C
  123.                 NOP  
  124.                 SETB SCL
  125.                 NOP
  126.                 NOP
  127.                 NOP
  128.                 NOP
  129.                 NOP  
  130.                 CLR SCL  
  131.                 DJNZ R7,WLP
  132.                 RET   

  133. ;從I2C總線讀取一個(gè)字節(jié)數(shù)據(jù)子程序
  134. RI2C:        MOV R7,#8
  135.                 CLR A
  136.                 SETB SDA
  137.                 NOP
  138. RLP:        SETB SCL
  139.                 NOP
  140.                 NOP  
  141.                 MOV C,SDA
  142.                 NOP  
  143.                 CLR SCL
  144.                 RLC A
  145.                 NOP
  146.                 NOP
  147.                 NOP
  148.                 NOP  
  149.                 DJNZ R7,RLP
  150.                 NOP
  151.                 RET
  152.                
  153. ;讀取從機(jī)應(yīng)答子程序
  154. RACK:        SETB SDA
  155.                 NOP
  156.                 NOP  
  157.                 SETB SCL
  158.                 CLR ACK
  159.                 NOP
  160.                 NOP  
  161.                 MOV C,SDA
  162.                 JC ACKEND
  163.                 SETB ACK
  164. ACKEND: NOP
  165.                 CLR SCL
  166.                 NOP
  167.                 RET
  168.                
  169. ;DA轉(zhuǎn)換程序
  170.                 ORG 1000H            ;000000000000000000000
  171. DAZH:        CLR P2.4
  172.                 SETB P2.5
  173.                 CLR P2.6
  174.                 MOV R0,#0FEH
  175.                 MOVX @R0,A
  176.                 RET               

  177.                
  178. ;測(cè)速程序
  179.             ORG 0000H
  180. RESET:  LJMP CESU               
  181. CESU:        MOV SP,#60H
  182.                 MOV B,#14H
  183.                 MOV R0,#00H
  184.                 MOV R1,#70H
  185.                 MOV TMOD,#51H
  186.                 MOV TL0,#00H
  187.                 MOV TH0,#4CH
  188.                 MOV TL1,#00H
  189.                 MOV TH1,#00H
  190.                 SETB ET0
  191.                 SETB ET1
  192.                 SETB EA
  193.                 SETB TR0
  194.                 SETB TR1
  195. HERE:   SJMP HERE
  196. IT0P:   MOV TL0,#00H
  197.                 MOV TH0,#4CH
  198.                 DJNZ B,RTURN
  199.                 CLR TR0
  200.                 SETB F0
  201. IT1P:        MOV        R1,TH1
  202.                 MOV        R0,TL1
  203.                 MOV B,3CH    ;60的16進(jìn)制
  204.                 MOV A,R0
  205.                 MUL AB        ;1s轉(zhuǎn)速轉(zhuǎn)換成1min轉(zhuǎn)速
  206.                 MOV R1,B
  207.                 MOV R0,A
  208.                 MOV A,R0      
  209.                 ANL A,#0FH
  210.                 MOV 30H,A
  211.                 MOV A,R0      
  212.                 SWAP A
  213.                 ANL A,#0FH
  214.                 MOV 31H,A
  215.                 MOV A,R1      
  216.                 ANL A,#0FH
  217.                 MOV 32H,A
  218.                 MOV A,R1      
  219.                 SWAP A
  220.                 ANL A,#0FH
  221.                 MOV 33H,A
  222.                 CLR TR1
  223.                 SETB F0       
  224. RTURN:  RETI


  225. ;顯示程序
  226. XS:                 CLR TI
  227.                  MOV R0,#30
  228.                  MOV R1,#4
  229. SEND:         MOV A,@R0
  230.                  MOV DPTR,#TAB
  231.                  MOVC A,@A+DPTR
  232.                  CPL A
  233.                  MOV SBUF,A
  234.                  JNB TI,$
  235.                  CLR TI
  236.                  INC R0
  237.                  DJNZ R1,SEND
  238.                  RET
  239. TAB:         DB 0C0H,0F9H,0A4H,0B0H,99H
  240.              DB 92H,82H,0F8H,80H,90H       
  241. END
復(fù)制代碼

全部資料51hei下載地址:
1.rar (141.45 KB, 下載次數(shù): 13)
回復(fù)

使用道具 舉報(bào)

ID:461851 發(fā)表于 2019-1-10 09:24 | 顯示全部樓層
請(qǐng)大家?guī)蛶兔Γ瑝嚎s包里是圖和程序,麻煩大家了
回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2019-1-10 14:34 | 顯示全部樓層
本帖最后由 ahshmj 于 2019-1-10 17:24 編輯

你的程序?qū)懙膯?wèn)題較多。最嚴(yán)重的是,"QJCSH"怎么放到了最前面?又沒(méi)有指定程序在程序存儲(chǔ)器的位置,自然就從0000H開始寫入。

以下的程序就沒(méi)地方寫了:

     LJMP START
        ORG 000BH
        LJMP IT0P
        ORG 001BH
        LJMP IT1P
        ORG 0100H

另外:       LJMP START  這一句的前面應(yīng)該有: ORG  0000H  (意思是第一個(gè)字節(jié)就是跳轉(zhuǎn)到 START)單片機(jī)上電或啟動(dòng)以后是從這里開始執(zhí)行程序。

你好像還需要繼續(xù)打牢基本功。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2019-1-10 18:53 | 顯示全部樓層
看樣子應(yīng)該是從C過(guò)來(lái)學(xué)匯編的
匯編代碼的位置和硬件是有很大關(guān)系的
首先:
ORG 00H
JMP  START
ORG  003H   ;聲明INT0中斷向量,也就是中斷地址
JMP   XXXX   ;去中斷處理程序
ORG  00BH  ;聲明INT1中斷向量
JMP   XXXX _1  ;去中斷處理程序
ORG 100H
START:           STARTD在這里相當(dāng)于一個(gè)地址,在JMP  START到ORG 100H之間不能有其它代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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