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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機匯編語言有辦法能轉成C語言嗎?

[復制鏈接]
跳轉到指定樓層
樓主
ID:1026744 發表于 2022-5-15 16:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
K1       BIT     P1.4                    ;加速鍵
K2       BIT     P1.5                    ;減速鍵
K3       BIT     P1.6                    ;正反鍵
CLK      BIT     P0.0                    ;速度控制信號
ZF       BIT     P0.1                    ;正反控制信號
PWMH     EQU     30H                     ;調寬值,定時器所賦值
PWML     EQU     31H
ORG     0000H
LJMP    MAIN
ORG     000BH                         ;中斷1控制周期
LJMP    TIMER1
ORG     001BH                         ;中斷3控制脈寬
LJMP    TIMER2
ORG     0030H
MAIN:    MOV PWMH,#00H
         MOV PWML,#0FH
         MOV TMOD,#11H              ;兩個定時器都工作在方式1
                  MOV TH0,#00H               ;65.536mm定時
         MOV TL0,#00H
                   MOV TH1,PWMH               ;脈寬
                   MOV TL1,PWML
         SETB EA                    ;CPU允許中斷
         SETB ET0                   ;允許定時器T0中斷
         SETB ET1                   ;允許定時器T1中斷
         SETB TR0                   ;定時器T0計數
         CLR  CLK
LOOP:    JB   K3,LOOPZF             ;高電平逆時針轉,低電平順時針轉
         CLR  ZF                    ;針轉
         LJMP LOOPK1
LOOPZF:  SETB ZF
LOOPK1:  JB   K1,LOOPK2             ;K1按下加速
         LCALL  DELAY
         MOV  A,PWML
         ADD  A,#1                   ;調寬值低4位加1
         MOV  PWML,A
         MOV  A,PWMH
         ADDC A,#0                   ;調寬值高4位加1
         MOV  PWMH,A
         JNC  LOOPK2                 ;最大值時
         MOV  PWMH,#0FFH
LOOPK2:  JB   K2,OVER                ;K2按下減速
         LCALL   DELAY
         MOV  A,PWML
         CLR  C
         SUBB A,#1                   ;調寬值低4位減1
         MOV  PWML,A
         MOV  A,PWMH
         SUBB A,#0                   ;調寬值高4位減1
         MOV  PWMH,A
         JNC  OVER
         MOV  PWMH,#00H              ;最小值時
OVER:    LJMP LOOP
TIMER1:  CLR  TR1
         MOV  TH0,#00H
         MOV  TL0,#00H
         MOV  TH1,PWMH               ;賦調寬值
         MOV  TL1,PWML
         SETB TR1
         CLR  CLK
         RETI
TIMER2:  CLR   TR1
         SETB  CLK
         RETI
DELAY:   MOV   R4,#10H
D1:      DJNZ  R4,D1
         RET
         END   
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:650411 發表于 2022-5-15 18:30 | 只看該作者
自己用C語言編幾行就搞定了
回復

使用道具 舉報

板凳
ID:624769 發表于 2022-5-15 19:10 | 只看該作者


  1. <p><p>sbit K1 = P1^4;  //;加速鍵
  2. sbit K2 = P1^5;  //;減速鍵
  3. sbit K3 = P1^6;  // ;正反鍵
  4. sbit CLK = P0^0;  // ;速度控制信號
  5. sbit ZF = P0^1;  // ;正反控制信號
  6. unsigned char PWMH,PWML;  //   ;調寬值,定時器所賦值</p><p>void Delay()
  7. {
  8. char i;
  9. i = 0x10;
  10. while(--i);
  11. }</p><p>void main()
  12. {
  13. PWMH = 0x00;
  14. PWML = 0x0F;
  15. TMOD = 0x11;//         ;兩個定時器都工作在方式1
  16.         TH0 = 0x00;//         ;65.536mm定時
  17.         TL0 = 0x00;
  18.         TH1 = PWMH;//               ;脈寬
  19.         TL1 = PWML;
  20.         EA  = 1;//                  ;CPU允許中斷
  21.         ET0 = 1;//                   ;允許定時器T0中斷
  22.         ET1 = 1;//                   ;允許定時器T1中斷
  23.         TR0 = 1;//                   ;定時器T0計數
  24.         CLK = 0; //</p><p> while(1)
  25. {
  26.   if(K3) //             ;高電平逆時針轉,低電平順時針轉
  27.   {
  28.    ZF = 1;
  29.   }
  30.   else
  31.   {
  32.    ZF = 0;//                    ;針轉
  33.   }
  34.   if(!K1)
  35.   {
  36.    Delay();
  37.    if(++PWML == 0x00) //                 ;調寬值低4位加1
  38.    {
  39.     if(++PWMH == 0x00) PWMH = 0xff;
  40.    }
  41.   }
  42.   if(!K2) //                ;K2按下減速
  43.   {
  44.    Delay();
  45.    if(--PWML == 0xff)
  46.    {
  47.     if(--PWMH == 0xff)  PWMH == 0x00;
  48.    }  
  49.   }
  50. }</p><p>}</p><p>
  51. void TIMER1() interrupt 1 // ORG     000BH                         ;中斷1控制周期
  52. {
  53. TR1 = 0;
  54.         TH0 = 0x00;
  55. TL0 = 0x00;
  56.         TH1 = PWMH;//               ;賦調寬值
  57.         TL1 = PWML;
  58.         TR1 = 1;
  59.         CLK = 0;
  60. }</p><p>void TIMER2() interrupt 3 //    ;中斷3控制脈寬
  61. {
  62. TR1 = 0;
  63.         CLK = 1;
  64. }</p>
復制代碼



回復

使用道具 舉報

地板
ID:624769 發表于 2022-5-15 19:21 | 只看該作者
sbit        K1 = P1^4;                //;加速鍵
sbit        K2 = P1^5;                //;減速鍵
sbit        K3 = P1^6;                // ;正反鍵
sbit        CLK = P0^0;                // ;速度控制信號
sbit        ZF = P0^1;                // ;正反控制信號
unsigned char PWMH,PWML;                //   ;調寬值,定時器所賦值

void        Delay()
{
        char i;
        i = 0x10;
        while(--i);
}

void        main()
{
        PWMH = 0x00;
        PWML = 0x0F;
        TMOD = 0x11;//         ;兩個定時器都工作在方式1
        TH0 = 0x00;//         ;65.536mm定時
        TL0 = 0x00;
        TH1 = PWMH;//               ;脈寬
        TL1 = PWML;
        EA  = 1;//                  ;CPU允許中斷
        ET0 = 1;//                   ;允許定時器T0中斷
        ET1 = 1;//                   ;允許定時器T1中斷
        TR0 = 1;//                   ;定時器T0計數
        CLK = 0; //

        while(1)
        {
                if(K3)        //             ;高電平逆時針轉,低電平順時針轉
                {
                        ZF = 1;
                }
                else
                {
                        ZF = 0;//                    ;針轉
                }
                if(!K1)
                {
                        Delay();
                        if(++PWML == 0x00) //                 ;調寬值低4位加1
                        {
                                if(++PWMH == 0x00)        PWMH = 0xff;
                        }
                }
                if(!K2)        //                ;K2按下減速
                {
                        Delay();
                        if(--PWML == 0xff)
                        {
                                if(--PWMH == 0xff)         PWMH == 0x00;
                        }               
                }
        }

}


void        TIMER1()        interrupt 1        // ORG     000BH                         ;中斷1控制周期
{
        TR1 = 0;
        TH0 = 0x00;
        TL0 = 0x00;
        TH1 = PWMH;//               ;賦調寬值
        TL1 = PWML;
        TR1 = 1;
        CLK = 0;
}

void        TIMER2()        interrupt 3        //    ;中斷3控制脈寬
{
        TR1 = 0;
        CLK = 1;
}

回復

使用道具 舉報

5#
ID:688692 發表于 2022-5-15 21:41 | 只看該作者
#include <reg51.h>
void DELAY();
//K1       BIT     P1.4                    ;加速鍵
sbit K1=P1^4;

//K2       BIT     P1.5                    ;減速鍵
sbit K2=P1^5;

//K3       BIT     P1.6                    ;正反鍵
sbit K3=P1^6;

//CLK      BIT     P0.0                    ;速度控制信號
sbit CLK=P0^0;

//ZF       BIT     P0.1                    ;正反控制信號
sbit ZF=P0^1;

//PWMH     EQU     30H                     ;調寬值,定時器所賦值
//PWML     EQU     31H
unsigned int PWM _at_ 0x30;
#define PWMH ((unsigned char *)(&PWM))[0]
#define PWML ((unsigned char *)(&PWM))[1]
//ORG     0000H
//LJMP    MAIN
//-----

//ORG     000BH                         ;中斷1控制周期
//LJMP    TIMER1
//void TIMER0() interrupt 1

//ORG     001BH                         ;中斷3控制脈寬
//LJMP    TIMER2
//void TIMER1() interrupt 3

//ORG     0030H
void main()
{
//MAIN:    MOV PWMH,#00H
        PWMH=0x00;
//         MOV PWML,#0FH
        PWML=0x0F;
//         MOV TMOD,#11H              ;兩個定時器都工作在方式1
        TMOD=0X11;
//         MOV TH0,#00H               ;65.536mm定時
        TH0=0X00;
//         MOV TL0,#00H
        TL0=0X00;
//         MOV TH1,PWMH               ;脈寬
        TH1=PWMH;
//         MOV TL1,PWML
        TL1=PWML;
//         SETB EA                    ;CPU允許中斷
        EA=1;
//         SETB ET0                   ;允許定時器T0中斷
        ET0=1;
//         SETB ET1                   ;允許定時器T1中斷
        ET1=1;
//         SETB TR0                   ;定時器T0計數
  TR0=1;
//         CLR  CLK
  CLK=0;
  while(1)
        {
//LOOP:    JB   K3,LOOPZF             ;高電平逆時針轉,低電平順時針轉
//         CLR  ZF                    ;針轉
//         LJMP LOOPK1
//LOOPZF:  SETB ZF
                ZF=K3;
//LOOPK1:  JB   K1,LOOPK2             ;K1按下加速
                if(K1==0)
                {
//         LCALL  DELAY
                        DELAY();
//         MOV  A,PWML
//         ADD  A,#1                   ;調寬值低4位加1
//         MOV  PWML,A
//         MOV  A,PWMH
//         ADDC A,#0                   ;調寬值高4位加1
//         MOV  PWMH,A
//         JNC  LOOPK2                 ;最大值時
//         MOV  PWMH,#0FFH
                        PWM++;
                        if(PWM==0x00)
                        {
                                PWMH=0xFF;
                        }
                }
//LOOPK2:  JB   K2,OVER                ;K2按下減速
                if(K2==0)
                {
//         LCALL   DELAY
                DELAY();
//         MOV  A,PWML
//         CLR  C
//         SUBB A,#1                   ;調寬值低4位減1
//         MOV  PWML,A
//         MOV  A,PWMH
//         SUBB A,#0                   ;調寬值高4位減1
//         MOV  PWMH,A
//         JNC  OVER
//         MOV  PWMH,#00H              ;最小值時
                        PWM--;
                        if(PWM==0xFFFF)
                        {
                                PWMH=0x00;
                        }
                }
//OVER:    LJMP LOOP
        }
}
void TIMER0() interrupt 1
{
//TIMER0:  CLR  TR1
        TR1=0;
//         MOV  TH0,#00H
        TH0=0;
//         MOV  TL0,#00H
        TL0=0;
//         MOV  TH1,PWMH               ;賦調寬值
        TH1=PWMH;
//         MOV  TL1,PWML
        TL1=PWML;
//         SETB TR1
        TR1=1;
//         CLR  CLK
        CLK=0;
//         RETI
}
void TIMER1() interrupt 3
{
//TIMER1:  CLR   TR1
        TR1=0;
//         SETB  CLK
        CLK=1;
//         RETI
}
void DELAY()
{
//DELAY:   MOV   R4,#10H
        unsigned char i;
        i=0x10;
//D1:      DJNZ  R4,D1
        do
        {
        --i;
        }while(i);
//         RET
}
//         END   
回復

使用道具 舉報

6#
ID:123289 發表于 2022-5-16 10:55 | 只看該作者
1、無有現成的工具。
2、理論很難達成。
如果你真的學精了單片機,就無此一問了。
回復

使用道具 舉報

7#
ID:319585 發表于 2022-5-16 17:32 來自手機 | 只看該作者
這個匯編翻譯成c,可以翻譯,但是比中文翻譯成英文要難一些。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区在线播放 | 国产精品国产精品国产专区不卡 | av一区二区三区 | 国产精品自产拍 | 国产精品成人一区二区三区夜夜夜 | 亚洲一区亚洲二区 | 午夜影院中文字幕 | 91偷拍精品一区二区三区 | 亚洲精品天堂 | 久久久久久九九九九九九 | 国产精品久久777777 | 特黄小视频 | 亚洲欧美日韩精品久久亚洲区 | 日韩最新网址 | 九九热精品视频在线观看 | 欧美日韩免费一区二区三区 | 欧美一区二区三区久久精品 | 成人毛片视频在线播放 | 欧美一区二区三区视频在线播放 | 欧美精品在线播放 | 狠狠爱视频 | 国产黑丝av | 国产精品国产a | 欧美理论在线观看 | 一区二区三区亚洲 | 免费观看一级毛片 | 国产亚洲精品久久情网 | 免费啪啪 | 69亚洲精品 | av超碰| 日本不卡一区二区三区在线观看 | 9久久精品 | 欧美簧片| 日韩亚洲一区二区 | 久久精品日产第一区二区三区 | 国产精品海角社区在线观看 | 国产区视频在线观看 | 伊人网站在线 | 成人精品国产免费网站 | 99精品网 | 久久国产亚洲 |