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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

五旬老漢學編程:紅外遙控電容調速風扇控制器制作 附單片機程序

查看數: 8174 | 評論數: 18 | 收藏 17
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2022-8-16 04:38

正文摘要:

制作這個風扇控制器主要是有時需要非常小的微風,特別是睡覺的時候,其次是年紀大了不容易睡著,想要定時久點,至少2小時以上。兩年前制作過一個風扇控制器,不是特別好用,現在用電容做調速,效果不錯運行很靜沒有 ...

回復

ID:712493 發表于 2024-9-16 21:06
hdtd121 發表于 2022-11-22 00:03
感覺能用匯編的都是牛人

不涉及計算的話,匯編不復雜的!
ID:89300 發表于 2024-9-16 13:48
大爺牛逼。匯編只看懂點點!
ID:890642 發表于 2024-8-28 20:21
牛逼人物
ID:868302 發表于 2023-10-24 13:59
牛人啊,匯編還這么流程
ID:23844 發表于 2023-10-21 12:01
可以借鑒樓主的電路與想路,用C語言來仿制一個.匯編不好移植另不是大神級別難看懂
ID:468209 發表于 2023-8-21 22:28
已前機械按鈕轉鈕的風扇就做過微風檔  接法也很簡單 就是一個1.2uF的風扇電容接在定時器就可了   當定時到了 線路斷開 電流會在電容通過 這樣定時到了就進入微風檔了  現在的都是電子遙控風扇加上有空調就懶得弄了 也很麻煩基本上要從新做控制電路
ID:1064915 發表于 2023-8-21 09:28
不定期損壞可控硅,估計是沒有過零檢測
ID:651494 發表于 2022-12-22 16:41
看到一堆MOV,JUMP,好熟悉的感覺!
ID:1009425 發表于 2022-12-21 17:21
牛人,匯編程序也能寫這么長,花了不少精力才能弄出來
ID:336378 發表于 2022-11-25 17:19
這個程序估計沒幾個人要下載去研究,畢經要過繪編這關。樓主還是牛。功基好。
ID:430492 發表于 2022-11-23 14:13
5旬不能算老漢吧,現在得算中年人,60以上才能算老人。
ID:1009477 發表于 2022-11-22 00:03
感覺能用匯編的都是牛人
ID:230742 發表于 2022-11-15 11:46
匯編。膜拜大佬。
其實最好用的,還是可控硅。我修過一個可以遙控的電風扇,就是可控硅控制的。不過是簡單的用法。4個TO-92封裝的小可控硅,控制電機的3個轉速。繼電器應該算是下下策了,都已經是智能控制了。在加個陣風模式,繼電器豈不是壞得更快。
論壇里有很多單片機控制可控硅調光、調速、調溫的例子,可以參考一下。一兩千瓦都可以的可控硅,控制個電風扇才幾十瓦,應該沒啥問題。
ID:1051908 發表于 2022-11-14 15:36
繼電器還有一種叫固態繼電器,你可以參考一下。
ID:888585 發表于 2022-11-10 10:19
一開始沒有仔細看,定睛一看是匯編,牛
ID:584814 發表于 2022-11-9 11:17
感覺能用匯編的都是牛人。如此詳細的注釋更牛
膜拜中學習了 ...
ID:262 發表于 2022-11-7 00:44
好資料,51黑有你更精彩!!!
ID:396309 發表于 2022-8-16 04:39
本帖最后由 楊小強 于 2022-8-16 04:42 編輯
  1. ;------------------------------------------------------------------------------------
  2. ;子程序:編碼器按鍵開關處理,間隔時間不超過0.6秒的2次短按,為有效按鍵動作
  3. ;出口參數:A=1(按了1次);A=2(按了2次);A=3(長按達到了10秒)
  4. ;------------------------------------------------------------------------------------
  5. KEY:
  6.         MOV        MJS,#10                ;放入等待時間(秒)
  7.         MOV        FENGMQ,#12         ;蜂鳴器響一聲,12*10毫秒=120毫秒
  8. KEY1:
  9.         MOV        A,MJS                ;裝入等待時間
  10.         JNZ        KEY2                ;如果不為0就轉移,時間未到
  11.         MOV        A,#3                ;時間到了
  12.         RET
  13. KEY2:
  14.         LCALL        SKEY                ;掃描按鍵
  15.         JC        KEY1                ;如果C=1(按鍵還沒松開),就繼續掃描
  16.         LCALL        KEYA                ;掃描按鍵600毫秒
  17.         JZ        KEY3                ;如果600毫秒內有按鍵動作就轉移
  18.         MOV        A,#1                ;600毫秒內沒有按鍵動作,置A=1(按了1次)
  19.         RET
  20. KEY3:
  21.         MOV        FENGMQ,#12         ;蜂鳴器響一聲,12*10毫秒=120毫秒
  22.         LCALL        KEYEX                ;等待第二次按鍵松開
  23.         MOV        A,#2                ;置A=2(按了2次)
  24.         RET

  25. ;----------- 掃描按鍵600毫秒,有按鍵動作A=0,無按鍵動作A=1 -----------
  26. KEYA:
  27.         MOV          SHMJS,#60        ;等待600毫秒
  28. KEYB:
  29.         MOV          A,SHMJS          ;裝入(10)毫秒計數
  30.         JZ           KEYC             ;為0(時間到)就轉移
  31.         LCALL        SKEY            ;掃描按鍵
  32.         JNC          KEYB             ;沒有按鍵動作(C=0)就轉移
  33.         CLR          A                ;有按鍵動作A=0
  34.         RET
  35. KEYC:
  36.         MOV          A,#1                 ;等待時間已到,A=1沒有按鍵動作
  37.         RET

  38. ;-------------- 按鍵開關掃描,未按C=0,已按下C=1 --------------
  39. SKEY:
  40.         SETB         EC11K                ;按鍵端口置為高電平
  41.         JNB          EC11K,SKEY1        ;為0(低電平)就轉移
  42.         CLR          C                ;C置為0,沒有按鍵動作
  43.         RET
  44. SKEY1:
  45.         LCALL        DELAY20          ;延時20毫秒
  46.         SETB        EC11K              ;延時結束后再次把按鍵端口置為高電平
  47.         JNB          EC11K,SKEY2        ;為0(低電平)就轉移
  48.         CLR          C                ;C置為0,沒有按鍵動作
  49.         RET                        ;按鍵未被有效按下,退出
  50. SKEY2:
  51.         SETB         C                ;C置為1,按鍵已有效按下
  52.         LCALL        SETPWM          ;有按鍵動作就重新放置“延時PWM驅動”時間
  53.         RET


  54. ;------------------ 等待按鍵釋放 ------------------
  55. KEYEX:
  56.         LCALL        SKEY                   ;掃描按鍵
  57.         JC           KEYEX           ;如果C=1(按鍵還沒釋放)就繼續掃描
  58.         RET

  59. ;------------------ 延時20毫秒 ------------------
  60. DELAY20:                        ;@11.0592MHz
  61.         PUSH         15H
  62.         PUSH         16H
  63.         PUSH         17H
  64.         MOV          15H,#2
  65.         MOV          16H,#32
  66.         MOV          17H,#58
  67. NEXT20:
  68.         DJNZ         17H,NEXT20
  69.         DJNZ         16H,NEXT20
  70.         DJNZ         15H,NEXT20
  71.         POP          17H
  72.         POP          16H
  73.         POP          15H
  74.         RET

  75. ;---------------------------------------------------------------------------------------------
  76. ;子程序:編碼器旋轉動作處理,根據旋轉方向增(減)定時時間、檔位
  77. ;10小時以下每次增(減)30分鐘;10小時及以上每次增(減)1個小時;20小時以上每次增(減)2個小時
  78. ;---------------------------------------------------------------------------------------------
  79. BMQCL:
  80.         LCALL        Scan2             ;掃描編碼器(無方向標志)
  81.         MOV        DSDW,DSDWJG        ;置交替顯示間隔時間
  82.         JB           BMQDZ,BMQCL        ;“編碼器動作”為1(動作未結束)就轉移繼續等待
  83. BMQCL0:
  84.         JNB           XSNRXZ,BMQCL5        ;“顯示內容選擇”為0(顯示定時時間)就轉移
  85.         SETB        YSBC                ;“延時保存”置為1
  86.         MOV        MJS,#10                ;“延時保存”時長(秒)。延時結束后才保存,避免頻繁的EEPROM操作
  87.         MOV        A,DANG                ;裝入當前檔位值
  88.         JB        XZFX,BMQCL2         ;“旋轉方向”為1(順時針正轉)就轉移
  89.         DEC        A                ;是反轉,減1檔
  90.         JNZ        BMQCL1                ;減1后不為0就轉移
  91.         RET       
  92. BMQCL1:
  93.         MOV        DANG,A
  94.         RET
  95. BMQCL2:
  96.         CJNE        A,#15,BMQCL3        ;是否已到最高15檔
  97. BMQCL3:
  98.         JC        BMQCL4                ;小于就轉移
  99.         MOV        DANG,#15        ;等于或大于,放入最高檔位15
  100.         RET
  101. BMQCL4:
  102.         INC        DANG                ;還未到上限,增1檔
  103.         RET
  104. BMQCL5:
  105.         CLR         SSBZ                ;“閃爍標志”置為0(數字及冒號狀態為“顯示”)
  106.         MOV         A,DSSJS                  ;裝入定時時間(時)
  107.         CJNE        A,#20,BMQCL6        ;當前“時”是否等于或大于20
  108. BMQCL6:
  109.         JC          BMQCL7                ;小于就轉移
  110.         MOV         R5,#2                ;等于或大于20,加減2個小時
  111.         LJMP        BMQCL9
  112. BMQCL7:
  113.         CJNE        A,#10,BMQCL8        ;當前“時”是否等于或大于10
  114. BMQCL8:
  115.         JC          BMQCL13                ;小于就轉移
  116.         MOV         R5,#1                ;等于或大于10,加減1個小時
  117. BMQCL9:
  118.         JNB         XZFX,BMQCL11        ;“旋轉方向”為0(逆時針反轉)就轉移
  119.         ADD         A,R5                 ;是正轉,加
  120.         CJNE        A,#100,BMQCL10        ;加完后是否等于或大于100
  121. BMQCL10:
  122.         JC          BMQCL12                 ;如果小于就轉移,把A放回到DSSJS
  123.         MOV         DSSJS,#99        ;已經大于99了,直接設置為99:59:59+HMJS(1秒),100小時
  124.         MOV         DSSJF,#59        ;已經大于99了,直接設置為99:59:59+HMJS(1秒),100小時
  125.         MOV         DSSJM,#59        ;已經大于99了,直接設置為99:59:59+HMJS(1秒),100小時
  126.         RET
  127. BMQCL11:
  128.         SUBB        A,R5                ;是反轉,減
  129. BMQCL12:
  130.         MOV         DSSJS,A                ;把計算結果放入DSSJS
  131.         RET
  132. BMQCL13:
  133.         MOV         A,DSSJF             ;小于10小時,裝入定時時間(分)
  134.         JNB         XZFX,BMQCL16          ;“旋轉方向”為0(逆時針反轉)就轉移
  135.         ADD         A,#30              ;是正轉,當前“分”加30
  136.         CJNE        A,#60,BMQCL14        ;加完后“分”是否等于或大于60
  137. BMQCL14:
  138.         JC          BMQCL15             ;小于60就轉移,把A放入定時時間(分)
  139.         SUBB        A,#60              ;等于或大于60,就減60,然后小時加1
  140.         INC         DSSJS                  ;小時加1
  141. BMQCL15:
  142.         MOV         DSSJF,A            ;把A放入定時時間(分)
  143.         RET
  144. BMQCL16:
  145.         CJNE        A,#30,BMQCL17        ;是逆時針反轉,當前“分”是否等于或大于30
  146. BMQCL17:
  147.         JC          BMQCL18          ;小于就轉移
  148.         SUBB        A,#30                  ;定時時間(分)減30
  149.         MOV         DSSJF,A         ;把計算結果放入定時時間(分)
  150.         RET
  151. BMQCL18:
  152.         MOV         A,#30                  ;“分”小于30,把30放入寄存器A
  153.         CLR         C               ;進位標志清0
  154.         SUBB        A,DSSJF         ;減“定時時間(分)”
  155.         MOV         DSSJF,A         ;減完后的結果暫時放入DSSJF
  156.         MOV         A,#60
  157.         SUBB        A,DSSJF         ;60減上面的計算結果,得出定時時間(分),然后小時減1
  158.         MOV         DSSJF,A         ;得出的數放入定時時間(分)
  159.         MOV         A,DSSJS         ;裝入定時時間(時)
  160.         JZ        DSSJQL                ;如果“時”為0就轉移(不夠減了,把定時時間清零)
  161.         DEC        DSSJS                ;“時”不為0,減1
  162.         RET
  163. DSSJQL:
  164.         MOV        DSSJS,#0        ;定時時間清零
  165.         MOV        DSSJF,#0        ;定時時間清零
  166.         MOV        DSSJM,#0        ;定時時間清零
  167.         RET

  168. ;----------------------------------------------------------------------------------------------
  169. ;子程序:掃描編碼器是否有旋轉動作并設置好方向標志
  170. ;出口參數:“編碼器動作”=1已經轉動,=0沒有轉動;“旋轉方向”=1順時針正轉,=0逆時針反轉
  171. ;----------------------------------------------------------------------------------------------
  172. Scan1:
  173.         SETB         EC11A               ;拉高編碼器A引腳電平
  174.         SETB         EC11B               ;拉高編碼器B引腳電平
  175.         JNB          EC11A,Scan11        ;如果為0(低電平)就轉移,編碼器有旋轉動作,順時針正轉
  176.         JNB          EC11B,Scan12        ;如果為0(低電平)就轉移,編碼器有旋轉動作,逆時針反轉
  177.         CLR          BMQDZ                 ;沒有旋轉動作,把“編碼器動作”置為0
  178.         RET
  179. Scan11:
  180.         SETB         XZFX                ;順時針正轉,把“旋轉方向”置為1
  181.         SETB         BMQDZ                ;有旋轉動作,把“編碼器動作”置為1
  182.         LCALL        SETPWM          ;有動作就重新放置“延時PWM驅動”時間
  183.         RET  
  184. Scan12:
  185.         CLR          XZFX                ;逆時針反轉,把“旋轉方向”置為0
  186.         SETB         BMQDZ                ;有旋轉動作,把“編碼器動作”置為1
  187.         LCALL        SETPWM          ;有動作就重新放置“延時PWM驅動”時間
  188.         RET

  189. ;-------------------------------------------------------------
  190. ;子程序:掃描編碼器是否有旋轉動作,不設置方向標志
  191. ;出口參數:“編碼器動作”BMQDZ=1已經轉動,=0沒有轉動
  192. ;-------------------------------------------------------------
  193. Scan2:
  194.         SETB         EC11A               ;拉高編碼器A引腳電平
  195.         SETB         EC11B               ;拉高編碼器B引腳電平
  196.         JNB          EC11A,Scan21        ;如果為0(低電平)就轉移,編碼器有旋轉動作
  197.         JNB          EC11B,Scan21        ;如果為0(低電平)就轉移,編碼器有旋轉動作
  198.         CLR          BMQDZ                 ;沒有旋轉動作,把“編碼器動作”置為0
  199.         RET
  200. Scan21:
  201.         SETB         BMQDZ                ;有旋轉動作,把“編碼器動作”置為1
  202.         LCALL        SETPWM          ;有動作就重新放置“延時PWM驅動”時間
  203.         RET

  204. ;--------------------------------------------------------------
  205. ;子程序:繼電器控制,T0中斷、EEPROM操作子程序調用
  206. ;--------------------------------------------------------------
  207. Control:
  208.         JNB        EEPBC,CTL00        ;EEPBC標志為0就轉移。為1表示EEPROM操作子程序正在調用下面的繼電器控制程序
  209.         RET
  210. CTL00:
  211.         MOV        A,DSSJM                ;裝入定時時間(秒)到寄存器A
  212.         JNZ        CTL02                ;不是0就轉移
  213.         MOV        A,DSSJF                ;裝入定時時間(分)到寄存器A
  214.         JNZ        CTL02                ;不是0就轉移
  215.         MOV        A,DSSJS                ;裝入定時時間(時)到寄存器A
  216.         JNZ        CTL02                ;不是0就轉移
  217. CTL01:
  218.         MOV        P3,#0FFH        ;置P3端口為高電平,斷電
  219.         RET
  220. CTL02:
  221.         JNB        PWM,CTL03        ;PWM標志為0就轉移。0=禁止PWM驅動,1=使用PWM方式驅動
  222.         MOV        A,YSPWM          ;裝入“延時PWM驅動”,為0時使用PWM驅動方式
  223.         JNZ           CTL03                ;不是0就轉移
  224.         JB        PWMBZ,CTL01        ;“PWM電平狀態標志”為1(高電平)就轉移。PWM周期25微秒*2=50微秒,20KHz占空比50%
  225. CTL03:
  226.         JB        FLQH,CTL05         ;“風類切換”為1自然風(睡眠風)就轉移
  227.         MOV         A,DANG           ;裝入檔位值
  228. CTL04:
  229.         PUSH        DPL
  230.         PUSH        DPH
  231.         MOV          DPTR,#DAB1        ;檔位控制碼地址
  232.         DEC        A                ;檔位值減1后為正確地址
  233.         MOVC         A,@A+DPTR        ;裝入檔位控制碼
  234.         MOV          P3,A            ;置P3口控制繼電器
  235.         POP        DPH
  236.         POP        DPL
  237.         RET
  238. CTL05:
  239.         MOV        A,SMFJG2         ;裝入自然風(睡眠風)檔位變化時的間隔時間(秒)
  240.         JZ        CTL06                ;是0就轉移
  241.         MOV        A,DANGW                ;裝入自然風當前檔位
  242.         LJMP        CTL04
  243. CTL06:
  244.         MOV        SMFJG2,SMFJG        ;重新放入設置的檔位變化間隔時間
  245.         LCALL        SETPWM          ;設置“延時PWM驅動”時間
  246.         MOV        A,DANGW           ;裝入當前檔位值
  247.         JNB        TSFX,CTL09         ;如果“調速方向”為0(漸慢降檔)就轉移
  248.         CJNE        A,DANG_G,CTL07        ;當前檔位值是否等于或大于設置的最高上限
  249. CTL07:
  250.         JC        CTL08                ;小于就轉移
  251.         MOV        A,DANG_G        ;等于或大于,裝入最高上限
  252.         CLR        TSFX                ;“調速方向”改為0(漸慢降檔)
  253.         LJMP        CTL09
  254. CTL08:
  255.         INC        A                ;增1檔
  256.         MOV        DANGW,A
  257.         LJMP        CTL04
  258. CTL09:
  259.         CJNE        A,DANG_D,CTL10        ;當前檔位值不是設置的最低下限就轉移
  260.         SETB        TSFX                ;是,“調速方向”改為1(漸快增檔)
  261.         LJMP        CTL04
  262. CTL10:
  263.         JC        CTL13                ;小于就轉移
  264.         CJNE        A,DANG_G,CTL11        ;是否大于設置的最高上限
  265. CTL11:
  266.         JC        CTL12                ;小于就轉移
  267.         MOV        A,DANG_G        ;等于或大于,裝入最高上限
  268. CTL12:
  269.         DEC        A                ;減1檔
  270.         MOV        DANGW,A
  271.         LJMP        CTL04
  272. CTL13:
  273.         MOV        A,DANG_D        ;小于最低下限,裝入最低下限
  274.         MOV        DANGW,A
  275.         LJMP        CTL04

  276. ;--------------------------------------------------------------
  277. ;子程序:T1中斷調用,時間計數及倒計時處理。10毫秒執行一次
  278. ;--------------------------------------------------------------
  279. TIME:
  280.         MOV        A,YSPWM           ;延時PWM驅動
  281.         JZ        TIME0
  282.         DEC        YSPWM             ;每10毫秒減1,直到為0
  283. TIME0:
  284.         MOV        A,FENGMQ        ;蜂鳴器鳴響時長
  285.         JZ        TIME1
  286.         DEC        FENGMQ          ;每10毫秒減1,直到為0
  287. TIME1:
  288.         MOV          A,SHMJS         ;裝入(10)毫秒計數
  289.         JZ           TIME2           ;如果是0就轉移
  290.         DEC          SHMJS           ;每10毫秒減1,直到為0
  291. TIME2:
  292.         MOV        A,HWJS          ;每10毫秒減1,為0時清除“接收到的紅外遙控數據碼”
  293.         JZ           TIME3           ;是0就轉移
  294.         DEC        HWJS                   ;減1
  295.         LJMP        TIME4
  296. TIME3:
  297.         MOV          MA1,FWBZ1          ;用“復位及EEPROM判斷標志”填充“接收到的紅外遙控數據碼”
  298.         MOV          MA2,FWBZ2          ;用“復位及EEPROM判斷標志”填充“接收到的紅外遙控數據碼”
  299. TIME4:
  300.         MOV          A,HMJS             ;裝入(10)毫秒計數2
  301.         JZ           TIME6              ;如果是0就轉移
  302.         DEC          HMJS               ;不是0,減1
  303.         CJNE         A,#50,TIME5        ;如果不是50就轉移退出
  304.         SETB         SSBZ                ;“閃爍標志”置為1,數字及冒號閃爍時用,每0.5秒變化一次
  305. TIME5:
  306.         RET
  307. TIME6:
  308.         CLR          SSBZ             ;“閃爍標志”置為0,數字及冒號閃爍時用,每0.5秒變化一次
  309.         MOV          HMJS,#99        ;重新放入計數值(1秒)
  310.         MOV          A,SMFJG2           ;裝入運行時使用的“睡眠風(自然風)檔位變化時的間隔時間(秒)”
  311.         JZ           TIME7                  ;如果是0就轉移
  312.         DEC          SMFJG2             ;每秒減1,直到為0
  313. TIME7:
  314.         MOV          A,MJS           ;秒計數
  315.         JZ           TIME8                  ;如果是0就轉移
  316.         DEC          MJS             ;每秒減1,直到為0
  317. TIME8:
  318.         MOV          A,FWBZ0           ;裝入復位提示(閃爍顯示)秒計數
  319.         JZ           TIME9                  ;如果是0就轉移
  320.         DEC          FWBZ0             ;每秒減1,直到為0
  321. TIME9:
  322.         MOV          A,DSDW           ;裝入定時與檔位交替顯示的間隔時間(秒)
  323.         JNZ           TIME10                  ;如果不是0就轉移
  324.         MOV        DSDW,DSDWJG        ;重新放入設置值
  325.         CPL        XSNRXZ                ;“顯示內容選擇”取反,交替顯示
  326. TIME10:
  327.         DEC          DSDW             ;每秒減1,直到為0
  328.         MOV          A,DSSJM           ;裝入定時時間(秒)到寄存器A
  329.         JZ           TIME11             ;如果是0就轉移
  330.         DEC          DSSJM             ;減1秒
  331.         RET
  332. TIME11:
  333.         MOV          A,DSSJF           ;裝入定時時間(分)到寄存器A
  334.         JZ           TIME12             ;如果是0就轉移
  335.         DEC          DSSJF             ;不是0,減1分
  336.         MOV          DSSJM,#59         ;把59放入定時時間(秒)
  337.         RET
  338. TIME12:
  339.         MOV          A,DSSJS         ;裝入定時時間(時)到寄存器A
  340.         JNZ          TIME13           ;不是0就轉移
  341.         CLR        XSNRXZ                ;定時結束,“顯示內容選擇”置為0,不顯示檔位
  342.         RET
  343. TIME13:
  344.         DEC          DSSJS             ;不是0,小時減1
  345.         MOV          DSSJM,#59         ;把59放入定時時間(秒)
  346.         MOV          DSSJF,#59         ;把59放入定時時間(分)
  347.         RET

  348. ;---------------------------------------------------------------------------
  349. ;子程序:T1中斷調用,顯示定時時間及檔位、紅外遙控解碼等。10毫秒執行一次
  350. ;---------------------------------------------------------------------------
  351. DISPLAY:
  352.         JB          XSKG,DPYSZ1        ;如果“顯示開關”為1(禁止T1顯示功能)就轉移,退出
  353.         JNB          XSQHY,DPYSZ0        ;如果“顯示切換1”為0(顯示定時或檔位)就轉移
  354.         LJMP        DSZ
  355. DPYSZ0:
  356.         JB          FLQH,DISPL0        ;如果“風類切換”為1睡眠風(自然風)就轉移,顯示定時時間
  357.         JNB          XSNRXZ,DISPL0        ;如果“顯示內容選擇”為0(顯示定時時間)就轉移
  358.         MOV         A,DANG           ;顯示檔位,裝入檔位值
  359.         CJNE        A,XSHC1,DPYSZ3        ;當前檔位值與緩存1不相同就轉移,立即顯示
  360.         MOV         A,HMJS               ;相同,裝入(10)毫秒計數2
  361.         CJNE        A,#99,DPYSZ2        ;不是99就轉移,每0.5秒顯示一次
  362.         LJMP        DPYSZ3              ;是,顯示
  363. DPYSZ1:        RET
  364. DPYSZ2:
  365.         CJNE         A,#49,DPYSZ1         ;不是49就轉移退出,每0.5秒顯示一次
  366. DPYSZ3:
  367.         MOV          XSHC1,DANG           ;當前檔位值放入緩存1
  368.         MOV          ZXM1,#0               ;放入消隱碼到待發送TM1637區1
  369.         MOV          ZXM4,#0               ;放入消隱碼到待發送TM1637區4
  370.         MOV          R0,#ZXM2          ;裝入待發送TM1637區2地址
  371.         MOV         A,DANG           ;裝入檔位值
  372.         LCALL        BCD               ;轉換并獲取字形碼放到待發送TM1637區2和3
  373.         LCALL        disp              ;發送4個字節數據到TM1637顯示
  374.         RET
  375. ;--------------------------------
  376. DISPL0:
  377.         CLR        XSNRXZ                 ;“顯示內容選擇”置為0,顯示定時時間
  378.         MOV          R1,#DSSJS         ;把定時時間“時”的地址放入R1
  379.         MOV          A,@R1             ;裝入“時”
  380.         JZ           DISPL1            ;如果“時”為0就轉移
  381.         LJMP         DISPL3
  382. DISPL1:
  383.         CLR          SSBZ                ;“時”為0,把“閃爍標志”置為0,始終顯示冒號
  384.         INC          R1                ;地址加1,指向“分”
  385.         MOV          A,@R1                ;裝入“分”
  386. DISPL3:
  387.         CJNE         A,XSHC1,DISPL6        ;寄存器A的數據與顯示緩存1不相同就轉移,立即顯示
  388.         INC          R1                  ;地址加1
  389.         MOV          A,@R1               ;裝入下一個時間數值
  390.         DEC          R1                  ;地址減1
  391.         CJNE         A,XSHC2,DISPL6        ;寄存器A的數據與顯示緩存2不相同就轉移,立即顯示
  392.         MOV          A,HMJS              ;都相同,裝入(10)毫秒時間計數2
  393.         CJNE         A,#99,DISPL5        ;不是99就轉移
  394.         LJMP         DISPL6              ;是,顯示(每0.5秒顯示一次)
  395. DISPL4:        RET
  396. DISPL5:
  397.         CJNE         A,#49,DISPL4         ;不是49就轉移退出,每0.5秒顯示一次
  398. DISPL6:
  399.         INC          R1                ;地址加1
  400.         MOV          A,@R1             ;裝入后面一位時間數值
  401.         MOV          XSHC2,A           ;放入緩存2
  402.         DEC          R1                ;地址減1
  403.         MOV          A,@R1             ;裝入前面一位時間數值
  404.         MOV          XSHC1,A           ;放入緩存1
  405.         MOV          R0,#ZXM1          ;待發送TM1637區1地址
  406.         LCALL        BCD               ;轉換并獲取字形碼放到待發送TM1637區1、2
  407.         INC          R1                ;地址加1
  408.         MOV          R0,#ZXM3          ;待發送TM1637區3地址
  409.         MOV          A,@R1             ;裝入后面一位時間數值
  410.         LCALL        BCD               ;轉換并獲取字形碼放到待發送TM1637區3、4
  411.         JB           SSBZ,DISPL8        ;如果“閃爍標志”為1就轉移,不顯示冒號
  412. DISPL7:
  413.         ORL          ZXM2,#10000000B        ;把最高位置為1(最高位為1就顯示冒號)
  414. DISPL8:
  415.         LCALL        disp             ;發送4個字節數據到TM1637顯示
  416.         RET
  417. ;--------------------------------
  418. DSZ:
  419.         JNB          XSQHE,DHW        ;如果“顯示切換2”為0(顯示紅外遙控信號解碼)就轉移
  420.         MOV        A,ZRFJG                ;裝入當前要顯示的項目號,1:檔位下限;2=檔位上限;3=檔位變化的間隔時間(秒)
  421.         DEC        A                ;減1
  422.         JNZ        DSZ1                ;不為0就轉移
  423.         MOV        A,DANG_D        ;是1,顯示檔位下限
  424.         MOV          ZXM1,#038H        ;放入“L”到待發送TM1637區1
  425.         LJMP        DSZ3
  426. DSZ1:
  427.         DEC        A                ;減1
  428.         JNZ        DSZ2                ;不為0就轉移
  429.         MOV        A,DANG_G        ;是2,顯示檔位上限
  430.         MOV          ZXM1,#076H        ;放入“H”到待發送TM1637區1
  431.         LJMP        DSZ3
  432. DSZ2:
  433.         MOV        A,SMFJG                ;是3,顯示檔位變化的間隔時間(秒)
  434.         MOV          ZXM1,#079H        ;放入“E”到待發送TM1637區1
  435. DSZ3:
  436.         MOV          ZXM2,#040H        ;放入“-”到待發送TM1637區2
  437.         MOV          R0,#ZXM3          ;待發送TM1637區3地址
  438.         LCALL        BCD               ;轉換并獲取字形碼放到待發送TM1637區2和3
  439.         LCALL        disp              ;顯示
  440.         RET
  441. ;---------------------------------
  442. DHW:
  443.         JB          BMXSQH,DHW4        ;如果“編碼顯示切換”為1(顯示數據碼+反碼)就轉移
  444.         MOV        A,XMBH                ;裝入功能編號
  445.         CJNE         A,XSHC1,DHW3        ;與顯示緩存1不相同就轉移,立即顯示
  446.         MOV         A,HMJS               ;相同,裝入(10)毫秒計數
  447.         CJNE        A,#99,DHW2        ;不是99就轉移,每0.5秒顯示一次
  448.         LJMP        DHW3              ;是,顯示
  449. DHW1:        RET
  450. DHW2:
  451.         CJNE         A,#49,DHW1         ;不是49就轉移退出,每0.5秒顯示一次
  452. DHW3:
  453.         MOV          XSHC1,XMBH           ;功能編號放入緩存1
  454.         MOV          R0,#ZXM1          ;顯示功能編號+系統碼,待發送TM1637區1
  455.         MOV        A,XMBH           ;裝入功能編號
  456.         LCALL        BCD1               ;獲取字形碼放到待發送TM1637區
  457.         MOV          ZXM2,#040H        ;放入“-”到待發送TM1637區2
  458.         MOV        A,ANJZ                ;裝入系統碼
  459.         MOV          R0,#ZXM3          ;待發送TM1637區3
  460.         LCALL        HEX              ;顯示十六進制系統碼
  461.         LCALL        disp              ;顯示十六進制系統碼
  462.         RET
  463. DHW4:
  464.         MOV        A,XMBH           ;裝入功能編號
  465.         MOV         B,#2               ;功能編號乘2
  466.         MUL         AB                ;功能編號乘2
  467.         DEC         A                 ;計算結果減1
  468.         ADD         A,#ANJZ           ;加遙控按鍵值首地址,得出數據碼的實際地址
  469.         MOV         R1,A             ;地址放入R1
  470.         MOV         A,@R1            ;裝入數據碼
  471.         CJNE         A,XSHC1,DHW7        ;與顯示緩存1不相同就轉移,立即顯示
  472.         INC          R1                  ;地址加1
  473.         MOV          A,@R1               ;裝入裝入數據碼反碼
  474.         DEC          R1                  ;地址減1
  475.         CJNE         A,XSHC2,DHW7        ;與顯示緩存2不相同就轉移,立即顯示
  476.         MOV          A,HMJS              ;都相同,裝入(10)毫秒時間計數
  477.         CJNE         A,#99,DHW6        ;不是99就轉移
  478.         LJMP         DHW7              ;是,顯示(每0.5秒顯示一次)
  479. DHW5:        RET
  480. DHW6:
  481.         CJNE         A,#49,DHW5         ;不是49就轉移退出,每0.5秒顯示一次
  482. DHW7:
  483.         INC          R1                ;地址加1
  484.         MOV          A,@R1             ;裝入數據碼反碼
  485.         MOV          XSHC2,A           ;放入緩存2
  486.         DEC          R1                ;地址減1
  487.         MOV          A,@R1             ;裝入數據碼碼
  488.         MOV          XSHC1,A           ;放入緩存1
  489.         MOV          R0,#ZXM1          ;待發送TM1637區1
  490.         LCALL        HEX              ;查表獲取字形碼
  491.         MOV         A,@R1            ;裝入數據碼反碼
  492.         LCALL        HEX              ;查表獲取字形碼
  493.         LCALL        disp              ;顯示
  494.         RET
  495. ;---------------------------------
  496. HEX:
  497.         PUSH        ACC
  498.         SWAP        A                ;高低半字節交換
  499.         ANL        A,#0FH                ;邏輯與運算
  500.         LCALL        BCD1               ;查表獲取字形碼放到待發送TM1637區
  501.         INC        R0                ;地址加1
  502.         POP        ACC
  503.         ANL        A,#0FH                ;邏輯與運算
  504.         LCALL        BCD1               ;查表獲取字形碼放到待發送TM1637區
  505.         INC        R0                ;地址加1
  506.         INC        R1                ;地址加1
  507.         RET
  508. ;---------------------------------
  509. BCD:
  510.         MOV          B,#10            ;轉換為BCD碼
  511.         DIV          AB               ;轉換為BCD碼
  512.         PUSH        DPL
  513.         PUSH        DPH
  514.         MOV          DPTR,#SEGTAB        ;查表獲取字形碼
  515.         MOVC         A,@A+DPTR        ;查表獲取字形碼
  516.         POP        DPH
  517.         POP        DPL
  518.         MOV          @R0,A            ;字形碼放入待發送TM1637區
  519.         INC          R0               ;地址加1
  520.         XCH          A,B              ;A、B寄存器內容交換
  521. BCD1:
  522.         PUSH        DPL
  523.         PUSH        DPH
  524.         MOV          DPTR,#SEGTAB        ;查表獲取字形碼
  525.         MOVC         A,@A+DPTR        ;查表獲取字形碼
  526.         POP        DPH
  527.         POP        DPL
  528.         MOV          @R0,A            ;字形碼放入待發送TM1637區
  529.         RET

  530. ;************** 關閉T1中斷的顯示功能,顯示“----”**************
  531. HENGX:
  532.         SETB        XSKG                ;“顯示開關”置為1,關閉T1中斷的顯示功能
  533.         MOV        ZXM1,#40H        ;顯示“----”
  534.         MOV        ZXM2,#40H
  535.         MOV        ZXM3,#40H        ;顯示“----”
  536.         MOV        ZXM4,#40H
  537.         LJMP        disp0

  538. ;---------- 發送4個字節數據到TM1637顯示,地址自動加1 ----------
  539. disp:
  540.         MOV          A,FWBZ0          ;裝入復位提示(閃爍顯示)秒計數
  541.         JZ           disp0                  ;如果是0(未發生復位)就轉移
  542.         JNB          SSBZ,disp0        ;已經發生復位,“閃爍標志”為0(閃爍顯示中的“顯示”狀態)就轉移
  543.         CLR          A               ;處于閃爍顯示中的“不顯示”狀態,放入消隱碼(0)
  544.         MOV          ZXM1,A          ;放入消隱碼
  545.         MOV          ZXM2,A          ;放入消隱碼
  546.         MOV          ZXM3,A          ;放入消隱碼
  547.         MOV          ZXM4,A          ;放入消隱碼
  548. disp0:
  549.         LCALL        Srt
  550.         MOV          A,#040H          ;數據命令設置40H:地址自動加1,寫數據到顯示寄存器
  551.         LCALL        Writebyte        ;發送一個字節
  552.         LCALL        Stop
  553.         NOP
  554.         LCALL        Srt
  555.         MOV          A,#0C0H          ;地址命令設置C0H:初始地址為00H
  556.         LCALL        Writebyte        ;發送一個字節
  557.         MOV          R6,#4            ;發送4個字節數據
  558.         MOV          R1,#ZXM1         ;等待發送的字形碼始址
  559. disp1:
  560.         MOV          A,@R1            ;裝入要發送的字形碼
  561.         LCALL        Writebyte        ;發送一個字節
  562.         INC          R1               ;地址加1
  563.         DJNZ        R6,disp1            ;如果還未發送完就繼續
  564.         LCALL        Stop
  565.         LCALL        Srt
  566.         MOV          A,SMGLD          ;裝入設置的數碼管亮度(1~8)
  567.         ADD          A,#087H          ;加上87H后即為對應的亮度控制命令88H~8FH
  568.         LCALL        Writebyte        ;按設置的亮度開顯示
  569.         LCALL         Stop
  570.         RET

  571. ;----- 發送8bit(一個字節)數據到TM1637,A=要發送的數據,從低位開始 -----
  572. Writebyte:
  573.         MOV         R7,#8             ;發送8位數據
  574. WBY1:
  575.         CLR         CLK               ;拉低CLK
  576.         JNB         ACC.0,WBY2        ;A寄存器的低位(0位)如果為0就轉移
  577.         SETB        DIO                ;為1,拉高DIO
  578.         SJMP        WBY3
  579. WBY2:
  580.         CLR         DIO             ;為0,拉低DIO
  581. WBY3:
  582.         MOV         R4,#13           ;延時
  583.         DJNZ        R4,$                 ;延時
  584.         SETB        CLK             ;拉高CLK
  585.         CLR         C               ;進位標志清0
  586.         RRC         A               ;A寄存器內容帶進位循環右移
  587.         DJNZ        R7,WBY1         ;如果還未發送完8bit數據就繼續
  588.         CLR         CLK             ;8位數據發送完了
  589.         MOV         R7,#20          ;設置等待應答信號延時計數
  590. WBY5:
  591.         JNB         DIO,WBY6        ;判斷TM1637發過來的ACK應答信號,應答就轉移(0,低電平)
  592.         DJNZ        R7,WBY5            ;
  593. WBY6:
  594.         MOV         R4,#13                 ;延時
  595.         DJNZ        R4,$                ;延時
  596.         SETB         CLK             ;拉高CLK
  597.         MOV         R4,#13                 ;延時
  598.         DJNZ        R4,$                ;延時
  599.         RET         

  600. ;------------------ Start子程序 ------------------
  601. Srt:
  602.         SETB         DIO             ;拉高DIO
  603.         SETB         CLK             ;拉高CLK
  604.         MOV         R4,#13          ;延時
  605.         DJNZ        R4,$                ;延時
  606.         SETB         DIO             ;拉高DIO
  607.         MOV         R4,#13          ;延時
  608.         DJNZ        R4,$                ;延時
  609.         CLR         DIO             ;拉低DIO
  610.         MOV         R4,#13          ;延時
  611.         DJNZ        R4,$                ;延時
  612.         CLR         CLK             ;拉低CLK
  613.         RET         

  614. ;------------------ Stop子程序 ------------------
  615. Stop:
  616.         CLR         CLK
  617.         MOV         R4,#30
  618.         DJNZ        R4,$
  619.         CLR         DIO
  620.         MOV         R4,#30
  621.         DJNZ        R4,$
  622.         SETB        CLK
  623.         MOV         R4,#40
  624.         DJNZ        R4,$
  625.         SETB        DIO
  626.         MOV         R4,#30
  627.         DJNZ        R4,$
  628.         CLR         CLK
  629.         CLR         DIO
  630.         RET         

  631. ;********************** 以下為EEPROM操作子程序 **********************
  632. ;STC8G1K08有4K的EEPROM,共8個扇區,
  633. ;第1扇區:0000H~01FFH;第2扇區:0200H~03FFH……
  634. ;----------------------------------------------------
  635. ;
  636. ;------- 讀EEPROM保存的各項設置,如果沒有就保存當前的設置值 ---------
  637. REEP:
  638.         LCALL        RE00              ;讀EEPROM
  639.         JNC        WEEP                ;無數據(C=0)就轉移,保存當前的設置值
  640.         RET
  641. WEEP:
  642.         LCALL        BCJDQ                ;全功率驅動繼電器保持至EEPROM操作結束,防止PWM驅動方式時可能斷開無法吸合
  643.         MOV          IAP_ADDRH,#00H        ;第一個扇區地址的高8位
  644.         MOV          IAP_ADDRL,#00H        ;第一個扇區地址的低8位
  645.         LCALL        Sector_Erase        ;擦除整個扇區
  646.         MOV          R1,#FWBZ1           ;首地址
  647.         MOV          R2,#30              ;共寫入20個字節
  648. WEEP1:
  649.         MOV          A,@R1                ;裝入R1指向的RAM地址的內容到A
  650.         LCALL        Byte_Program         ;寫入EEPROM
  651.         INC          IAP_ADDRL            ;EEPROM地址加1
  652.         INC          R1                   ;RAM地址增1
  653.         DJNZ         R2,WEEP1             ;未保存完就轉移繼續
  654.         MOV          IAP_ADDRL,#0         ;保存完了,扇區地址低位指向0(當前扇區首址)
  655.         LCALL        Byte_Read            ;讀出來檢查看是否寫入成功
  656.         CJNE         A,FWBZ1,WEEP3        ;如果與EEPROM數據判斷標志1不相同就轉移
  657.         INC          IAP_ADDRL            ;EEPROM地址加1
  658.         LCALL        Byte_Read            ;讀第二個字節
  659.         CJNE         A,FWBZ2,WEEP3        ;如果與EEPROM數據判斷標志2不相同就轉移
  660.         RET                        ;成功了,退出
  661. WEEP3:
  662.         SETB        XSKG                ;“顯示開關”置為1,關閉T1中斷的顯示功能
  663.         MOV          MJS,#5            ;顯示5秒E1
  664.         MOV          ZXM1,#0           ;消隱碼
  665.         MOV          ZXM2,#079H        ;E
  666.         MOV          ZXM3,#006H        ;1
  667.         MOV          ZXM4,#0           ;消隱碼
  668.         LCALL        DISP              ;顯示
  669. WEEP4:
  670.         MOV          A,MJS
  671.         JNZ          WEEP4             ;等待MJS為0秒
  672.         RET

  673. ;;---------- 讀EEPROM保存的各項設置 ----------
  674. RE00:
  675.         LCALL        BCJDQ                ;全功率驅動繼電器保持至EEPROM操作結束,防止PWM驅動方式時可能斷開無法吸合
  676.         MOV          IAP_ADDRH,#00H        ;第一個扇區地址的高8位
  677.         MOV          IAP_ADDRL,#00H        ;第一個扇區地址的低8位
  678.         LCALL        Byte_Read           ;讀第一個字節,返回:A=讀出的數據
  679.         CJNE         A,FWBZ1,RE02        ;如果不是原來保存的數據就轉移
  680.         INC          IAP_ADDRL           ;EEPROM字節地址增1
  681.         LCALL        Byte_Read           ;讀第二個字節
  682.         CJNE         A,FWBZ2,RE02        ;如果不是原來保存的數據就轉移
  683.         MOV          R1,#FWBZ2           ;從FWBZ2+1處開始放置讀出的設置值
  684.         MOV          R2,#28              ;再讀出28個字節
  685. RE01:
  686.         INC          R1                  ;RAM地址增1
  687.         INC          IAP_ADDRL           ;EEPROM字節地址增1
  688.         LCALL        Byte_Read           ;讀一個字節,返回:A=讀出的數據
  689.         MOV          @R1,A               ;放到R1指向的RAM地址
  690.         DJNZ         R2,RE01             ;未讀完就繼續
  691.         SETB        C                ;把C置為1,讀取成功
  692.         RET
  693. RE02:
  694.         CLR        C                ;把C置為0,沒有數據
  695.         RET

  696. ;-------------------------------
  697. ;EEPROM操作需要數毫秒以上,期間MCU會暫停,PWM停止。
  698. ;全功率驅動使繼電器保持吸合狀態至EEPROM操作結束,防止PWM驅動方式時可能斷開無法吸合
  699. BCJDQ:
  700.         LCALL        SETPWM          ;設置“延時PWM驅動”時間
  701.         SETB        EEPBC                ;“EEPROM操作子程序調用”標志置為1,使T0中斷暫停執行繼電器控制程序
  702.           LCALL        CTL00                ;控制繼電器
  703.         CLR        EEPBC                ;標志置為0
  704.         RET

  705. ;-------------------------------
  706. ;讀一個字節,A=讀出的數據
  707. Byte_Read:
  708.         MOV        IAP_CONTR,#80H                ;打開IAP功能
  709.         MOV        IAP_TPS,#12                ;設置等待參數
  710.         MOV        IAP_CMD,#01                  ;設置IAP讀命令
  711.         MOV        IAP_TRIG,#05AH               ;觸發命令
  712.         MOV        IAP_TRIG,#0A5H               ;觸發命令
  713.         NOP
  714.         MOV        A,IAP_DATA                   ;讀出的數據在IAP_DATA,送入累加器A
  715.         RET

  716. ;-------------------------------
  717. ;字節編程,A=需寫入的數據
  718. Byte_Program:
  719.         MOV        IAP_CONTR,#80H                ;打開IAP功能
  720.         MOV        IAP_TPS,#12                ;設置等待參數
  721.         MOV        IAP_CMD,#02                  ;設置IAP寫命令
  722.         MOV        IAP_DATA,A                   ;要寫入的數據先送進IAP_DATA寄存器
  723.         MOV        IAP_TRIG,#05AH               ;觸發命令
  724.         MOV        IAP_TRIG,#0A5H               ;觸發命令
  725.         RET

  726. ;-------------------------------
  727. ;擦除扇區
  728. Sector_Erase:
  729.         MOV        IAP_CONTR,#80H                ;打開IAP功能
  730.         MOV        IAP_TPS,#12                ;設置等待參數
  731.         MOV        IAP_CMD,#03                  ;設置IAP擦除命令
  732.         MOV        IAP_TRIG,#05AH               ;觸發命令
  733.         MOV        IAP_TRIG,#0A5H               ;觸發命令
  734.         RET

  735. ;************************* 以上為EEPROM操作子程序 ***************************
  736. ;
  737. ;1~15檔控制碼:
  738. DAB1: DB 0FEH,0FDH,0FBH,0FAH,0F9H,0F8H,0F4H,0F2H,0F1H,0F0H,0E4H,0E2H,0E1H,0E0H,0DFH
  739. ;
  740. ;------------------ 字形表 ------------------
  741. SEGTAB:
  742.         DB  00111111B  ;0(3FH)
  743.         DB  00000110B  ;1(06H)
  744.         DB  01011011B  ;2(5BH)
  745.         DB  01001111B  ;3(4FH)
  746.         DB  01100110B  ;4(66H)
  747.         DB  01101101B  ;5(6DH)
  748.         DB  01111101B  ;6(7DH)
  749.         DB  00000111B  ;7(07H)
  750.         DB  01111111B  ;8(7FH)
  751.         DB  01101111B  ;9(6FH)
  752.         DB  01110111B  ;A(77H)
  753.         DB  01111100B  ;B(7CH)
  754.         DB  00111001B  ;C(39H)
  755.         DB  01011110B  ;D(5EH)
  756.         DB  01111001B  ;E(79H)
  757.         DB  01110001B  ;F(71H)

  758. ;---------------------------------------------

  759.         END
復制代碼

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美中文字幕一区二区三区亚洲 | 青青草av| 在线视频成人 | 亚洲成人免费在线观看 | 99热视 | 在线色网 | 亚洲乱码一区二区三区在线观看 | 综合国产第二页 | 日韩精品视频在线免费观看 | 欧美福利久久 | 国产精品不卡一区 | 亚洲精品一区二区三区在线 | 日韩精品一区二区在线观看 | 一本大道久久a久久精二百 国产成人免费在线 | 伊人免费视频二 | 一区二区视频在线 | 精品久久久精品 | 老牛影视av一区二区在线观看 | 美国av片在线观看 | 久久久久久久久91 | 欧美v在线 | 国产精品99 | 午夜影院在线观看 | 久久一区二区三区四区 | 免费观看av| 午夜视频免费在线 | 国产一区二区三区免费 | 殴美黄色录像 | 精品欧美一区二区三区 | www.久| 欧美成人影院在线 | 久久99久久99久久 | 国产精品揄拍一区二区久久国内亚洲精 | 四虎永久在线精品免费一区二 | 中国一级特黄真人毛片 | 亚洲国产精品一区二区三区 | 蜜桃传媒av | av网站观看 | 成人特区 | 国产精品呻吟久久av凹凸 | 中文字幕欧美日韩一区 |