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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LED臺燈PWM控制匯編程序.ASM

[復制鏈接]
跳轉到指定樓層
樓主
ID:70976 發表于 2014-12-27 13:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. ;/*******************************************************************************
  2. ;* 標題: LED臺燈程序*
  3. ;* 文件: LED臺燈PWM控制.asm *
  4. ;* 日期: 2009-11-28 *
  5. ;* 版本: 1.0*
  6. ;* 作者: 部分程序參考網上修改而成,本人最終改編測試,特別對原作致敬!*
  7. ;* 郵箱: wqhanxing@163.com *
  8. ;********************************************************************************
  9. ; LED臺燈程序*
  10. ; 利用定時器控制產生占空比可變的PWM 波*
  11. ; 按K1,PWM 值增加,則占空比減小,LED 燈漸暗。*
  12. ; 按K2,PWM 值減小,則占空比增加,LED 燈漸亮。*
  13. ; 我的5644遙控器上的0~9數字鍵對應10個亮度等級。*
  14. ; 當PWM 值增加到最大值或減小到最小值時,蜂鳴器將報警*
  15. ; 資源:p1 口,數碼管。p3.4,p3.5 亮度控制按鍵P3.0 PWM端口,p3.1 蜂鳴器報警*
  16. ;********************************************************************************
  17.         LEVEL0        EQU        2FH;        亮度等級9
  18.         LEVEL1        EQU        4FH;        亮度等級8
  19.         LEVEL2        EQU        6FH;        亮度等級7
  20.         LEVEL3        EQU        8FH;        亮度等級6
  21.         LEVEL4        EQU        0AFH;        亮度等級5
  22.         LEVEL5        EQU        0BFH;        亮度等級4
  23.         LEVEL6        EQU        0CFH;        亮度等級3
  24.         LEVEL7        EQU        0DFH;        亮度等級2
  25.         LEVEL8        EQU        0EFH;        亮度等級1
  26.         LEVEL9        EQU        0FFH;        亮度等級0

  27.         PWM         EQU 7FH         ;PWM 賦初始值

  28.         LED_RAM        EQU        30H
  29.         IRCOM         EQU 50H        ;50H-53H IR 使用
  30.         IR_NEW        EQU 60H        ;新的遙控代碼值用

  31.         LED_PORT        EQU        P1         ;數碼管接口,共陰極
  32.         PWM_OUT         EQU P3.0 ;PWM控制輸出接口       
  33.         INCKEY                 EQU P3.5 ;K1,PWM 值增加鍵。
  34.         DECKEY                 EQU P3.4 ;K2,PWM 值減小鍵。
  35.         BEEP                 EQU P3.1 ;蜂鳴器
  36.         IRIN                EQU P3.2         

  37. ;---------------------------
  38.         ORG 0000H
  39.         SJMP START
  40.         ORG 0003H
  41.         LJMP  REMOT        ;IRF         
  42.         ORG 000BH
  43.         SJMP INTT0
  44.         ORG 001BH
  45.         SJMP INTT1
  46.         ORG 0030H
  47. ;---------------------------
  48. ;主程序
  49. ;定時器0 工作在模式1,定時器1 工作在模式2。
  50. ;---------------------------

  51. START:       
  52.         MOV SP,#30H
  53.         MOV TMOD,#21H
  54.         MOV IP,#00001010B
  55.         MOV TH1,PWM ;脈寬調節
  56.         MOV TL1,#00H
  57.          
  58.         MOV TH0,#0FEH ;1ms 延時常數0FC
  59.         MOV TL0,#0CH ;頻率調節066

  60.         SETB EA                ;開總中斷
  61.         SETB ET0         ;定時器0允許
  62.         SETB ET1         ;定時器1允許
  63.         SETB TR0         ;定時器0啟動
  64.         SETB EX0        ;外中斷0打開
  65.         SETB IT0                ;外中斷0采用脈沖方式               ;
  66. LOOP:
  67.         LCALL DISPLAY
  68.         MOV A,PWM ;
  69.         JB INCKEY,LOOP1 ;增加鍵是否按下?
  70.         CALL DELAY ;延時去抖動
  71.         JB INCKEY,LOOP1
  72.         CJNE A,#0FFH,PWMINC ;是否到最大值?
  73.         CALL BEEP_BL ;是,蜂鳴器報警。
  74.         SJMP LOOP

  75. PWMINC: INC PWM ;調節脈寬(脈寬減小)
  76.         SJMP LOOP

  77. LOOP1:         JB DECKEY,LOOP2 ;減小鍵是否按下?
  78.         CALL DELAY ;延時去抖動
  79.         JB DECKEY,LOOP2
  80.         CJNE A,#01H,PWMDEC ;是否到最小值?
  81.         CALL BEEP_BL ;是,蜂鳴器報警。
  82.         SJMP LOOP

  83. PWMDEC: DEC PWM ;調節脈寬(脈寬增加)
  84. LOOP2:         SJMP LOOP

  85. ;-----------------------------
  86. ;T0 中斷服務子程序(頻率)
  87. ;控制定時器1 中斷
  88. ;-----------------------------
  89. INTT0:        
  90.         CLR TR1
  91.         MOV TH0,#0FEH ;1ms 延時常數
  92.         MOV TL0,#0CH ;頻率調節
  93.         MOV TH1,PWM
  94.         SETB TR1
  95.         CLR PWM_OUT ;啟動輸出
  96.         RETI

  97. ;-----------------------------
  98. ;T1 中斷服務子程序(脈寬)
  99. ;控制PWM 脈沖寬度
  100. ;-----------------------------
  101. INTT1:        
  102.         CLR TR1 ;脈寬調節結束
  103.         SETB  PWM_OUT ;結束輸出
  104.         RETI

  105. ;-----------------------------
  106. ;************************有接收到遙控器信號*******
  107. REMOT:       
  108.         CLR EA
  109.         PUSH  ACC
  110.         PUSH  PSW
  111.         SETB PSW.3        ;選擇工作寄存器組1(SETB PSW.3)
  112.         CLR PSW.4        ;                 (CLR  PSW.4)      
  113.         MOV R0,#IRCOM
  114. I1: JNB IRIN,I2 ;等待IR 信號出現
  115.         JMP IR_SHOW1;I1;原值I1
  116. I2: MOV R4,#20
  117. I20: CALL DEL
  118.         DJNZ R4,I20
  119.         JB IRIN,IR_SHOW1;I1 ;確認IR 信號出現
  120. I21: JB IRIN,I3 ;等IR 變為高電平
  121.         CALL DEL
  122.         JMP I21
  123. I3: MOV R3,#0 ;8 位數清為0
  124. LL:        JNB IRIN,I4 ;等IR 變為低電平
  125.         CALL DEL
  126.         JMP LL
  127. I4: JB IRIN,I5 ;等IR 變為高電平
  128.         CALL DEL
  129.         JMP I4
  130. I5: MOV R2,#0 ;0.14ms 計數
  131. L1: CALL DEL
  132.         JB IRIN, N1 ;等IR 變為高電平;IR=0,檢查R2 中的計數值
  133.         MOV A,#8
  134.         CLR C
  135.         SUBB A,R2 ;判斷高低位;IF C=0 BIT=0
  136.         MOV A,@R0
  137.         RRC A
  138.         MOV @R0,A ;處理完一位
  139.         INC R3
  140.         CJNE R3,#8,LL ;需處理完8 位
  141.         MOV R3,#0
  142.         INC R0
  143.         CJNE R0,#54H,LL ;收集到4 字節了
  144.         JMP IR_SHOW
  145. N1: INC R2
  146.         CJNE R2,#30,L1 ;30--0.14ms 計數過長則時間到自動離開
  147.         JMP IR_SHOW1
  148. ;------------------------------------------------
  149. IR_SHOW:                ;使用我的5644遙控器。
  150.         MOV  A,50H      ;
  151.         XRL  A,#40H     ;判斷遙控器低8位地址是否正確(40H)
  152.         JNZ  IR_SHOW1       ;
  153.         MOV  A,51H
  154.         XRL  A,#3FH     ;再判斷遙控器高8位地址是否正確(3FH)
  155.         JNZ  IR_SHOW1
  156.         MOV A,52H
  157.         CPL A ;                                將52H 取反后和53H 比較
  158.         CJNE A,53H,IR_SHOW1 ;如果不等表示接收數據發生錯誤,放棄。
  159.         CALL D1;        解碼成功則調用相應按鍵的處理程序+++++++++++++++++++++++++
  160. ;        MOV A,IR_NEW
  161. ;        CJNE A,#0FFH,IR_PWM;不是數字鍵則退出
  162. ;        JMP IR_SHOW1
  163. IR_PWM:
  164.         MOV DPTR,#IR_ASC
  165.         MOV A,IR_NEW
  166.         MOVC A,@A+DPTR
  167.         MOV PWM,A
  168. IR_SHOW1:
  169.         POP  PSW
  170.         POP  ACC
  171.         SETB IRIN
  172.         SETB EA
  173.         RETI

  174. D1:        MOV A,52H
  175.         CJNE A,#01H,D2  ;是數字鍵1嗎?
  176.         MOV IR_NEW,#01H        ;是則送數據01H
  177.         CALL BEEP_BL ;蜂鳴器報警。
  178.         RET

  179. D2:        CJNE A,#02H,D3  ;是數字鍵2嗎?
  180.         MOV IR_NEW,#02H        ;是則送數據02H
  181.         CALL BEEP_BL ;蜂鳴器報警。
  182.         RET

  183. D3:        CJNE A,#03H,D4  ;是數字鍵3嗎?
  184.         MOV IR_NEW,#03H        ;是則送數據03H
  185.         CALL BEEP_BL ;蜂鳴器報警。
  186.         RET

  187. D4:        CJNE A,#04H,D5  ;是數字鍵4嗎?
  188.         MOV IR_NEW,#04H        ;是則送數據04H
  189.         CALL BEEP_BL ;蜂鳴器報警。
  190.         RET

  191. D5:        CJNE A,#05H,D6  ;是數字鍵5嗎?
  192.         MOV IR_NEW,#05H        ;是則送數據05H
  193.         CALL BEEP_BL ;蜂鳴器報警。
  194.         RET

  195. D6:        CJNE A,#06H,D7  ;是數字鍵6嗎?
  196.         MOV IR_NEW,#06H        ;是則送數據06H
  197.         CALL BEEP_BL ;蜂鳴器報警。
  198.         RET

  199. D7:        CJNE A,#07H,D8  ;是數字鍵7嗎?
  200.         MOV IR_NEW,#07H        ;是則送數據07H
  201.         CALL BEEP_BL ;蜂鳴器報警。
  202.         RET

  203. D8:        CJNE A,#08H,D9  ;是數字鍵8嗎?
  204.         MOV IR_NEW,#08H        ;是則送數據08H
  205.         CALL BEEP_BL ;蜂鳴器報警。
  206.         RET

  207. D9:        CJNE A,#09H,D0  ;是數字鍵9嗎?
  208.         MOV IR_NEW,#09H        ;是則送數據09H
  209.         CALL BEEP_BL ;蜂鳴器報警。
  210.         RET

  211. D0:        CJNE A,#00H,D15        ;是數字鍵0嗎?
  212.         MOV IR_NEW,#00H        ;是則送數據00H
  213.         CALL BEEP_BL ;蜂鳴器報警。
  214.         RET

  215. D13:CJNE A,#11H,D14        ;是音量加鍵嗎?實現速度加
  216.         MOV IR_NEW,#0FFH;非數字鍵標示為0FFH
  217.         INC PWM
  218.         MOV A,PWM
  219.         CJNE A,#00H,D13_OUT
  220.         CALL BEEP_BL ;蜂鳴器報警。
  221.         MOV PWM,#0FFH
  222. D13_OUT:
  223.         RET

  224. D14:CJNE A,#10H,D15        ;是音量減鍵嗎?實現速度減
  225.         MOV IR_NEW,#0FFH;非數字鍵標示為0FFH
  226.         DEC PWM
  227.         MOV A,PWM
  228.         CJNE A,#0FFH,D14_OUT        ;9
  229.         CALL BEEP_BL ;蜂鳴器報警。
  230.         MOV PWM,#01H
  231. D14_OUT:
  232.         RET
  233. D15:
  234. ;        MOV IR_NEW,#0FFH;非數字鍵標示為0FFH
  235.         RET
  236. ;**********************************************
  237. ;判斷顯示程序
  238. ;-------------
  239. DISPLAY:
  240. DIS0:       
  241.         MOV A,PWM
  242.         SUBB A,#LEVEL0
  243.         JNC DIS1
  244.         MOV LED_RAM,#9
  245.         JMP LED_DISP
  246. DIS1:       
  247.         MOV A,PWM
  248.         SUBB A,#LEVEL1
  249.         JNC DIS2
  250.         MOV LED_RAM,#8
  251.         JMP LED_DISP
  252. DIS2:       
  253.         MOV A,PWM
  254.         SUBB A,#LEVEL2
  255.         JNC DIS3
  256.         MOV LED_RAM,#7
  257.         JMP LED_DISP
  258. DIS3:       
  259.         MOV A,PWM
  260.         SUBB A,#LEVEL3
  261.         JNC DIS4
  262.         MOV LED_RAM,#6
  263.         JMP LED_DISP
  264. DIS4:       
  265.         MOV A,PWM
  266.         SUBB A,#LEVEL4
  267.         JNC DIS5
  268.         MOV LED_RAM,#5
  269.         JMP LED_DISP
  270. DIS5:       
  271.         MOV A,PWM
  272.         SUBB A,#LEVEL5
  273.         JNC DIS6
  274.         MOV LED_RAM,#4
  275.         JMP LED_DISP
  276. DIS6:       
  277.         MOV A,PWM
  278.         SUBB A,#LEVEL6
  279.         JNC DIS7
  280.         MOV LED_RAM,#3
  281.         JMP LED_DISP
  282. DIS7:       
  283.         MOV A,PWM
  284.         SUBB A,#LEVEL7
  285.         JNC DIS8
  286.         MOV LED_RAM,#2
  287.         JMP LED_DISP
  288. DIS8:       
  289.         MOV A,PWM
  290.         SUBB A,#LEVEL8
  291.         JNC DIS9
  292.         MOV LED_RAM,#1
  293.         JMP LED_DISP

  294. DIS9:       
  295.         MOV A,PWM
  296.         SUBB A,#LEVEL9
  297.         JNC LED_DISP
  298.         MOV LED_RAM,#0

  299. LED_DISP:
  300.         MOV DPTR,#LED_ASC
  301.         MOV A,LED_RAM
  302.         MOVC A,@A+DPTR
  303.         MOV LED_PORT,A
  304.         RET

  305. LED_ASC:;共陰極LED代碼
  306.         DB 3FH,06H,5BH,4FH,66H;0~F代碼
  307.         DB 6DH,7DH,07H,7FH,6FH
  308.         DB 77H,7CH,39H,5EH,79H
  309.         DB 71H
  310.         DB 0BFH,086H,0DBH,0CFH,0E6H;0.~9.(帶小數點)代碼
  311.         DB 0EDH,0FDH,087H,0FFH,0EFH
  312.         DB 039H;字符“C”
  313. ;****************************************************
  314. IR_ASC:
  315.         DB 0FAH,0EAH,0DAH,0CAH,0BAH
  316.         DB 0A0H, 80H, 60H, 40H, 02H

  317. ;------------------------------------------------
  318.                 ; DELAY R5*0.14MS
  319. DEL:        MOV R5,#1 ;IR 解碼使用
  320. DEL0:         MOV R6,#2
  321. DEL1:         MOV R7,#32
  322. DEL2:         DJNZ R7,DEL2
  323.                 DJNZ R6,DEL1
  324.                 DJNZ R5,DEL0
  325.                 RET

  326. ;------------------------
  327. ;10ms 延時子程序,按鍵去抖動用
  328. DELAY:
  329.         MOV R5,#50
  330. DELAY1:
  331.         MOV R6,#100
  332.         DJNZ R6,$
  333.         DJNZ R5,DELAY1
  334.         RET
  335.          
  336. ;-----------------------------------------------
  337. ;蜂鳴器響一聲子程序
  338. BEEP_BL:MOV R6,#100
  339. BL1:CALL BL2
  340.         CPL BEEP
  341.         DJNZ R6,BL1         
  342.         MOV R5,#25
  343.         CALL DELAY2
  344.         RET         
  345. BL2:MOV R7,#180
  346. BL3:NOP
  347.         DJNZ R7,BL3
  348.         RET
  349. DELAY2: MOV R6,#50        ;延時R5×10MS
  350. BL4:         MOV R7,#100
  351. BL5:         DJNZ R7,BL5
  352.                 DJNZ R6,BL4
  353.                 DJNZ R5,DELAY2
  354.                 RET
  355. ;---------------------------------------------------
  356.         END
復制代碼


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

使用道具 舉報

沙發
ID:95342 發表于 2015-11-17 21:48 | 只看該作者
真的太感謝樓主了,資料很有幫助
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品自拍视频 | 久久精品国产久精国产 | 久久久一区二区三区 | 91精品国产一区二区在线观看 | 欧美一a| 国产精品有限公司 | 成年人免费看的视频 | 欧美一级片在线看 | 中国黄色在线视频 | 久久久久久91香蕉国产 | 99爱在线 | 成人免费网站 | 久久精品一 | 久久精片 | 免费欧美 | 国产jizz女人多喷水99 | 日本在线你懂的 | 欧美视频在线一区 | 日本成人中文字幕 | 99久久精品免费视频 | 在线观看国产视频 | 欧美成人一级 | 天天天堂 | 亚洲成人高清 | 99久久精品一区二区成人 | 有码一区 | 91短视频网址 | www.中文字幕.com | 精品久久久久久久久久 | 999久久久免费精品国产 | 伦理二区 | 久久99国产精品 | 日韩一区二区三区在线观看视频 | 国产韩国精品一区二区三区 | 国产欧美综合在线 | 欧美一区二区免费电影 | 国产精品一区二区久久 | 国产精品日韩一区二区 | 天天干天天草 | 美女黄网站 | 亚洲一区二区三区在线观看免费 |