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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

幫忙將一個C函數(shù)寫成匯編語言

[復(fù)制鏈接]
ID:168155 發(fā)表于 2017-3-10 17:53 | 顯示全部樓層 |閱讀模式
100黑幣
單片機程序
void receive() //接收數(shù)據(jù)
{
        uchar count;
        uchar i=0x00;
        uint k=0x00;
        DATA=0;
        i=0x00;
        if(!in)
        {
                while(!in)                 //前導(dǎo)電平,4*48us
                {
                        k++;                 //4+2+3+4=13
                        delay80us();//(40us)+1+2+2+2+2+3+3=15+40us
                        if(k>220)
                        {DATA=0;return;}         //同步碼 低位限時(10000~~21000us)
                }
                if(k<104)
                        {DATA=0;return;}  //同步碼 低位限時
                for(count=0;count<24;count++)  //開始收集
                {
                        if(in)                       
                        {
                                DATA=DATA<<1;
                                i=0;
                                while(in)        //高位計數(shù)i*44.75us
                                {
                                        delay80us();
                                        i++;  //4+(2+1+2+3+3)=15
                                        if(i>23)
                                        {DATA=0;return;}//高位限時解碼<(2013us)
                                }
                                if(i<10)
                                {
                                        if((2<i)&&(i<9));//記低電平(220us-805us)
                                        else
                                        {DATA=0;return;}
                                }
                                else
                                {                       
                                        if((12<i)&&(i<23))
                                        {DATA=DATA|0x01;}//記高電平(940-2013)實際1450us
                                        else
                                        {DATA=0;return;}
                                }       
                        }
                        while(!in)
                                {delay80us();}//位計數(shù)
                }
        }
}

void sjzh()                                                 //轉(zhuǎn)換接收到的數(shù)據(jù)
{
        char i=0;
        if(DATA>0)
        {
                for(i=2;i>=0;i--)
                {
                        D[i]=DATA;
                        DATA>>=8;
                }
        }
        DATA=0;
}

回復(fù)

使用道具 舉報

ID:155507 發(fā)表于 2017-3-10 17:53 | 顯示全部樓層
  1.              ; FUNCTION receive (BEGIN)

  2. ;---- Variable 'i' assigned to Register 'R5' ----
  3.               CLR     A
  4.               MOV     R5,A

  5. ;---- Variable 'k' assigned to Register 'R2/R3' ----
  6.               MOV     R3,A
  7.               MOV     R2,A

  8.               MOV     P0,A

  9.             JB      in,?C0012

  10.         ?C0009:

  11.             JB      in,?C0010

  12.                 INC     R3
  13.             CJNE    R3,#00H,?C0035
  14.                 INC     R2
  15.          ?C0035:

  16.       R     LCALL   delay80us

  17.                 SETB    C
  18.                 MOV     A,R3
  19.               SUBB    A,#0DCH
  20.                 MOV     A,R2
  21.               SUBB    A,#00H
  22.               JC      ?C0009
  23.               SJMP    ?C0039
  24.          ?C0010:
  25.                 CLR     C
  26.                 MOV     A,R3
  27.               SUBB    A,#068H
  28.               MOV     A,R2
  29.               SUBB    A,#00H
  30.               JNC     ?C0013
  31.     ?C0036:
  32.               SJMP    ?C0039
  33.     ?C0013:
  34. ;---- Variable 'count' assigned to Register 'R4' ----
  35.             CLR     A
  36.             MOV     R4,A
  37.   ?C0014:
  38.             JNB     in,?C0027
  39.             MOV     A,P0
  40.             ADD     A,ACC
  41.             MOV     P0,A
  42.             CLR     A
  43.             MOV     R5,A
  44.   ?C0018:
  45.             JNB     in,?C0019
  46.       R     LCALL   delay80us
  47.             INC     R5
  48.             MOV     A,R5
  49.             SETB    C
  50.             SUBB    A,#017H
  51.             JC      ?C0018
  52.   ?C0037:
  53.             SJMP    ?C0039
  54.     ?C0019:
  55.               MOV     A,R5
  56.               CLR     C
  57.               SUBB    A,#0AH
  58.               JNC     ?C0021
  59.               MOV     A,#02H
  60.               CLR     C
  61.               SUBB    A,R5
  62.               JNC     ?C0022
  63.               MOV     A,R5
  64.               CLR     C
  65.               SUBB    A,#09H
  66.               JC      ?C0027
  67.     ?C0022:
  68.     ?C0038:
  69.               SJMP    ?C0039
  70.     ?C0021:
  71.               MOV     A,#0CH
  72.               CLR     C
  73.               SUBB    A,R5
  74.               JNC     ?C0025
  75.               MOV     A,R5
  76.             CLR     C
  77.             SUBB    A,#017H
  78.             JNC     ?C0025
  79.             ORL     P0,#01H
  80.             SJMP    ?C0027
  81.   ?C0025:
  82.   ?C0039:
  83.             CLR     A
  84.             MOV     P0,A
  85.             RET     
  86.   ?C0027:
  87.             JB      in,?C0016
  88.       R     LCALL   delay80us
  89.             SJMP    ?C0027
  90.   ?C0016:
  91.             INC     R4
  92.             MOV     A,R4
  93.             XRL     A,#018H
  94.             JNZ     ?C0014
  95.   ?C0012:
  96.             RET     
  97.              ; FUNCTION receive (END)

  98.              ; FUNCTION sjzh (BEGIN)
  99. ;---- Variable 'i' assigned to Register 'R7' ----
  100.             MOV     A,P0
  101.             SETB    C
  102.             SUBB    A,#00H
  103.             JC      ?C0029
  104.             MOV     R7,#02H
  105.   ?C0030:
  106.       R     MOV     A,#LOW D
  107.             ADD     A,R7
  108.             MOV     R0,A
  109.             MOV     @R0,P0
  110.             MOV     P0,#00H
  111.             DEC     R7
  112.             CLR     C
  113.             MOV     A,R7
  114.             XRL     A,#080H
  115.             SUBB    A,#080H
  116.             JNC     ?C0030
  117.   ?C0029:
  118.             CLR     A
  119.             MOV     P0,A
  120.             RET     
  121.              ; FUNCTION sjzh (END)
復(fù)制代碼
回復(fù)

使用道具 舉報

ID:168155 發(fā)表于 2017-3-10 17:55 | 顯示全部樓層
延時函數(shù)DELAY80US:   ;誤差 0us     MOV R6,#0BH DL0:     MOV R5,#02H     DJNZ R5,$     DJNZ R6,DL0     RET
回復(fù)

使用道具 舉報

ID:168155 發(fā)表于 2017-3-13 11:49 | 顯示全部樓層
本帖最后由 wolfe~alone 于 2017-3-13 13:54 編輯

麻煩問一下,P0是什么,作一個存儲單元用嗎MOV P0,#01
MOV A,P0
XRL A,#00H
JNC SUCCESS
發(fā)現(xiàn)從P0中讀出的結(jié)果永遠(yuǎn)是0呢?無法進(jìn)入SUCCESS

回復(fù)

使用道具 舉報

ID:168155 發(fā)表于 2017-3-13 20:23 | 顯示全部樓層
wolfe~alone 發(fā)表于 2017-3-13 11:49
麻煩問一下,P0是什么,作一個存儲單元用嗎MOV P0,#01
MOV A,P0
XRL A,#00 ...

好似知道了,我用的是STC15F102,發(fā)現(xiàn)就P3口可以用,但不知道為什么P0不能用
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品成人一区二区 | 久久久亚洲综合 | 亚洲精品中文字幕在线观看 | 久久久久国产一级毛片高清网站 | 91国产精品 | 国产成人综合网 | 男人的天堂在线视频 | 成人免费一区二区 | 久久最新 | 黄网免费看 | h片在线免费看 | 久久久亚洲综合 | 午夜免费| 欧美高清视频一区 | 喷水毛片 | 国产精品免费一区二区 | 又黄又爽的网站 | 亚洲天堂久久 | 色综合国产 | 国产精品成人在线观看 | av中文字幕网 | 日韩手机视频 | 亚洲国产成人在线 | 99re在线视频观看 | 精品无码久久久久久国产 | 亚洲 日本 欧美 中文幕 | 国产精品不卡视频 | 国产日韩欧美 | 成人午夜在线视频 | 亚洲综合精品 | 91视频网址| 成人小视频在线免费观看 | 欧美在线看片 | 蜜臀av日日欢夜夜爽一区 | 日韩一区二区三区在线 | 中文字幕综合 | 亚洲成人自拍 | 精品国产一区二区久久 | 成人欧美一区二区三区视频xxx | av中文字幕在线观看 | 黄色一级免费看 |