天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234
設計開發

專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

開發工具

提供開發工具、應用測試 完善的開發代碼案例庫分享

技術支持

從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!

新聞中心

提供最新的單片機資訊,行業消息以及公司新聞動態

MCD-DEMO實驗板運行的鍵判斷制作的循環燈

更新時間: 2019-03-26
閱讀量:1683

每次按下RB2的按鍵,輸出不同的結果,這個實例是:每按下1次RB2,C口的燈從低位開始顯示,規律是:RC0-RC7的8個LED燈循環顯示其實,讀者可以變通一下,每按一下RB2,可以電亮一盞燈,可以執行一段程序,通過反復按壓RB2可以實現多種功能循環的復雜程序.我就用他作了一個7音警報器程序.可見,鍵判斷的應用是很廣的,下邊是實驗學習程序: LIST P=PIC16F876A #INCLUDE P16F876A.INC;

*************************************COUNT1 EQU 20h ;定義一個廷時變量寄存器COUNT2 EQU 21h ;定義另一個廷時變量寄存器 ORG 0 GOTO START ORG D'20'START BSF STATUS,RP0 MOVLW B'00011111' MOVWF TRISB MOVLW B'00000000' MOVWF TRISC BCF OPTION_REG,7 BCF STATUS,RP0;

***************************************LOOP0 BTFSC PORTB,2 ;測試S2按下否?是!跳過下條指令 GOTO LOOP0 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 BTFSC PORTB,2 ;再次測試S2按下否?是!跳過下條指令 GOTO LOOP0 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 CLRF PORTC BSF PORTC,0 ;置C口0為1LOOP1 BTFSS PORTB,2 ;判斷松開否?為1,松開了,跳一步 GOTO LOOP1 ;為0,沒放開,等待 CALL DELAY ;調用延時,消抖動 BTFSS PORTB,2 ;再次判斷S2松開否?為1,松開了,跳一步 GOTO LOOP1 ;為0,沒放開,等待 CALL DELAY ;為0,按鍵按下了,調用消抖 ;

***************************** LOOP2 BTFSC PORTB,2 ;測試S2按下否?是!跳過下條指令 GOTO LOOP2 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 BTFSC PORTB,2 ;再次測試S2按下否?是!跳過下條指令 GOTO LOOP2 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 CLRF PORTC BSF PORTC,1 ;置C口1為1LOOP3 BTFSS PORTB,2 ;判斷松開否?為1,松開了,跳一步 GOTO LOOP3 ;為0,沒放開,等待 CALL DELAY ;調用延時,消抖動 BTFSS PORTB,2 ;再次判斷S2松開否?為1,松開了,跳一步 GOTO LOOP3 ;為0,沒放開,等待 CALL DELAY ;為0,按鍵按下了,調用消抖動 ;*****************************

LOOP4 BTFSC PORTB,2 ;測試S2按下否?是!跳過下條指令 GOTO LOOP4 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 BTFSC PORTB,2 ;再次測試S2按下否?是!跳過下條指令 GOTO LOOP4 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 CLRF PORTC BSF PORTC,2 ;置C口2為1LOOP5 BTFSS PORTB,2 ;判斷松開否?為1,松開了,跳一步 GOTO LOOP5 ;為0,沒放開,等待 CALL DELAY ;調用延時,消抖動 BTFSS PORTB,2 ;再次判斷S2松開否?為1,松開了,跳一步 GOTO LOOP5 ;為0,沒放開,等待 CALL DELAY ;為0,按鍵按下了,調用消抖動 ;

***************************** LOOP6 BTFSC PORTB,2 ;測試S2按下否?是!跳過下條指令 GOTO LOOP6 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 BTFSC PORTB,2 ;再次測試S2按下否?是!跳過下條指令 GOTO LOOP6 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 CLRF PORTC BSF PORTC,3 ;置C口3為1LOOP7 BTFSS PORTB,2 ;判斷松開否?為1,松開了,跳一步 GOTO LOOP7 ;為0,沒放開,等待 CALL DELAY ;調用延時,消抖動 BTFSS PORTB,2 ;再次判斷S2松開否?為1,松開了,跳一步 GOTO LOOP7 ;為0,沒放開,等待 CALL DELAY ;為0,按鍵按下了,調用消抖動 ;

*****************************LOOP8 BTFSC PORTB,2 ;測試S2按下否?是!跳過下條指令 GOTO LOOP8 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 BTFSC PORTB,2 ;再次測試S2按下否?是!跳過下條指令 GOTO LOOP8 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 CLRF PORTC BSF PORTC,4 ;置C口4為1LOOP9 BTFSS PORTB,2 ;判斷松開否?為1,松開了,跳一步 GOTO LOOP9 ;為0,沒放開,等待 CALL DELAY ;調用延時,消抖動 BTFSS PORTB,2 ;再次判斷S2松開否?為1,松開了,跳一步 GOTO LOOP9 ;為0,沒放開,等待 CALL DELAY ;為0,按鍵按下了,調用消抖動 ;

*****************************LOOP10 BTFSC PORTB,2 ;測試S2按下否?是!跳過下條指令 GOTO LOOP10 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 BTFSC PORTB,2 ;再次測試S2按下否?是!跳過下條指令 GOTO LOOP10 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 CLRF PORTC BSF PORTC,5 ;置C口5為1LOOP11 BTFSS PORTB,2 ;判斷松開否?為1,松開了,跳一步 GOTO LOOP11 ;為0,沒放開,等待 CALL DELAY ;調用延時,消抖動 BTFSS PORTB,2 ;再次判斷S2松開否?為1,松開了,跳一步 GOTO LOOP11 ;為0,沒放開,等待 CALL DELAY ;為0,按鍵按下了,調用消抖動 ;

***************************** LOOP12 BTFSC PORTB,2 ;測試S2按下否?是!跳過下條指令 GOTO LOOP12 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 BTFSC PORTB,2 ;再次測試S2按下否?是!跳過下條指令 GOTO LOOP12 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 CLRF PORTC BSF PORTC,6 ;置C口6為1LOOP13 BTFSS PORTB,2 ;判斷松開否?為1,松開了,跳一步 GOTO LOOP13 ;為0,沒放開,等待 CALL DELAY ;調用延時,消抖動 BTFSS PORTB,2 ;再次判斷S2松開否?為1,松開了,跳一步 GOTO LOOP13 ;為0,沒放開,等待 CALL DELAY ;為0,按鍵按下了,調用消抖動 ;

***************************** LOOP14 BTFSC PORTB,2 ;測試S2按下否?是!跳過下條指令 GOTO LOOP14 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 BTFSC PORTB,2 ;再次測試S2按下否?是!跳過下條指令 GOTO LOOP14 ;為1,沒按下,繼續判斷 CALL DELAY ;調用延時,消抖 CLRF PORTC BSF PORTC,7 ;置C口7為1LOOP15 BTFSS PORTB,2 ;判斷松開否?為1,松開了,跳一步 GOTO LOOP15 ;為0,沒放開,等待 CALL DELAY ;調用延時,消抖動 BTFSS PORTB,2 ;再次判斷S2松開否?為1,松開了,跳一步 GOTO LOOP15 ;為0,沒放開,等待 CALL DELAY ;為0,按鍵按下了,調用消抖動 GOTO LOOP0;

****************************DELAY MOVLW D'13' MOVWF COUNT2LOP0 MOVLW D'255' MOVWF COUNT1 DECFSZ COUNT1,1 ;延時消抖程序 GOTO $-1 DECFSZ COUNT2,1 GOTO LOP0 RETURN;*****************************

 END



联系我们: 甘谷县| 柘城县| 成安县| 贡觉县| 娄烦县| 五指山市| 沂源县| 法库县| 达日县| 新郑市| 伊宁市| 民县| 临城县| 盖州市| 儋州市| 宜宾市| 顺平县| 清新县| 始兴县| 安仁县| 色达县| 蚌埠市| 湾仔区| 新郑市| 六盘水市| 绥芬河市| 延川县| 张家港市| 介休市| 光山县| 琼结县| 德令哈市| 玉屏| 九江县| 台南县| 南陵县| 麟游县| 阿图什市| 宁强县| 芜湖县| 永胜县|