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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4775|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:168155 發(fā)表于 2017-3-10 17:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
100黑幣
單片機(jī)程序
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;}         //同步碼 低位限時(shí)(10000~~21000us)
                }
                if(k<104)
                        {DATA=0;return;}  //同步碼 低位限時(shí)
                for(count=0;count<24;count++)  //開始收集
                {
                        if(in)                       
                        {
                                DATA=DATA<<1;
                                i=0;
                                while(in)        //高位計(jì)數(shù)i*44.75us
                                {
                                        delay80us();
                                        i++;  //4+(2+1+2+3+3)=15
                                        if(i>23)
                                        {DATA=0;return;}//高位限時(shí)解碼<(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)實(shí)際1450us
                                        else
                                        {DATA=0;return;}
                                }       
                        }
                        while(!in)
                                {delay80us();}//位計(jì)數(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;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(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ù)

使用道具 舉報(bào)

板凳
ID:168155 發(fā)表于 2017-3-10 17:55 | 只看該作者
延時(shí)函數(shù)DELAY80US:   ;誤差 0us     MOV R6,#0BH DL0:     MOV R5,#02H     DJNZ R5,$     DJNZ R6,DL0     RET
回復(fù)

使用道具 舉報(bào)

地板
ID:168155 發(fā)表于 2017-3-13 11:49 | 只看該作者
本帖最后由 wolfe~alone 于 2017-3-13 13:54 編輯

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

回復(fù)

使用道具 舉報(bào)

5#
ID:168155 發(fā)表于 2017-3-13 20:23 | 只看該作者
wolfe~alone 發(fā)表于 2017-3-13 11:49
麻煩問一下,P0是什么,作一個(gè)存儲單元用嗎MOV P0,#01
MOV A,P0
XRL A,#00 ...

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美乱码精品一区二区三区 | 国产性生活一级片 | 成人免费在线观看 | 91精品国产一区二区三区动漫 | 91av在线视频观看 | 男人的天堂一级片 | 中文字幕在线观看日韩 | 久在线观看 | 成人免费一区二区三区视频网站 | 日本久久黄色 | 国产在线视频一区二区董小宛性色 | 欧美一级做性受免费大片免费 | av毛片 | 九九热精品视频在线观看 | 久干网 | 国产精品久久久久久久久久免费 | 日韩精品一区二区三区视频播放 | 欧美日韩亚 | 亚洲精品视频在线看 | 久久久久免费精品国产 | 91在线电影 | av看片| av国产精品毛片一区二区小说 | 欧美日韩亚洲国产 | 国产一区二区观看 | 午夜影院免费体验区 | 久精品视频 | 国产成人短视频在线观看 | 黑人久久 | 三级成人片 | 狠狠操狠狠干 | 亚洲免费视频播放 | 天天色综网 | 久久精品国产一区 | 国产精品日本一区二区不卡视频 | 亚洲精品一区二区在线 | 日本三级全黄三级三级三级口周 | 亚洲精品无| 伊人狼人影院 | 久久久精品影院 | 一区二区三区高清 |