|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
張版主請看依你說的方式編的初步程序有否問題? |
| 作者:wenlw 欄目:單片機(jī) |
這是我初步編的程序,還沒有進(jìn)行調(diào)試,請指正看那里還有問題,再次感謝了! ;****************************************************************** ; ; try skin program ; ; designed by wenlw ; 2005.01.18 ; ;****************************************************************** ;Variable setup TMR0 EQU 1H PCL EQU 2H STATUS EQU 3H FSR EQU 4H PORTA EQU 5H PORTB EQU 6H ;fan level fanlevel equ 8H ;0:LEVEL1,1:LEVEL2,2:LEVEL3,記憶風(fēng)扇檔位 ;delay time,將10ms的半波分為50個時間段,每段0.2ms FAN1 equ 0 ;第一檔,0-63,驅(qū)動脈沖延遲時間等于fan1*0.2ms,以過零點(diǎn)為基準(zhǔn)點(diǎn) FAN2 equ 0 ;第二檔,請?jiān)诖苏{(diào)整相位角 FAN3 equ 0 ;第三檔 ;hot level hotlevel equ 9H ;0:OFF,1:LEVEL1,2:LEVEL2,3LEVEL3,記憶加熱檔位 ;delay time,改變其值可調(diào)整相位角 HOT1 equ 0 ;第一檔 HOT2 equ 0 ;第二檔 HOT3 equ 0 ;第三檔 ;LED助記符 LED EQU PORTB LEDFAN1 EQU 1 LEDFAN2 EQU 2 LEDFAN3 EQU 3 LEDHOT1 EQU 4 LEDHOT2 EQU 5 LEDHOT3 EQU 6 LEDHOTOFF EQU 7 FKEYSTATE EQU 10H ;保存FANKEY輸入狀態(tài),0 NO INPUT,1 INPUT但未消抖,2已消抖等待按鍵釋放 HKEYSTATE EQU 11H ;保存HOTKEY輸入狀態(tài) LOOPCOUNTER EQU 12H ;循環(huán)指針 TEMP EQU 13H ;臨時寄存器 MINU501 EQU 14H ;5MIN計(jì)數(shù)器低字節(jié) MINU502 EQU 15H ;5MIN計(jì)數(shù)器高字節(jié) DRVON EQU 16H ;驅(qū)動開啟標(biāo)志 ;KEY和驅(qū)動助記符 KEYFAN EQU 0 KEYHOT EQU 1 DRVFAN EQU 2 DRVHOT EQU 3 AC0 EQU 0 ;C EQU 0 ;DC EQU 1 ;Z EQU 2 ;****************************************************************** ;program start org 000h start: NOP CALL INIT MAINLOOP: CALL pulsetest MOVF DRVON,0 BTFSC STATUS,Z ;Z清除,DRVON開,執(zhí)行輸出程序 GOTO MN1 ;Z有效,DRVON關(guān),不執(zhí)行輸出程序 CALL FANSET CALL HOTSET MN1: CALL KEYSCAN GOTO MAINLOOP ;****************************************************************** ; init program init: nop ;PORT SET MOVLW b'00000001' ;RB0 INPUT,RB1-RB7 OUTPUT TRIS LED MOVLW b'00001100' ;RA0,RA1 INPUT,RA2,RA3 OUTPUT TRIS PORTA ;SET ALL OUTPUT AS 0 CLRF PORTA MOVLW 0FFH IORWF PORTB,1 ;HOT OFF,FAN LEVLE1 CLRF FANLEVEL CLRF HOTLEVEL ;TURN ON LED BSF LED,LEDFAN1;First setup fan1,hot1 as hight BSF LED,LEDHOT1 ;SET TIMER USE PRESCALE,1:128,INTERAL,UPEDGE ;00000110 MOVLW 6 OPTION RETLW 0 ;****************************************************************** ;key scan keyscan: nop CLRF TMR0 MOVLW 40 ;5ms到了嗎? SUBWF TMR0, BTFSS STATUS,C ;C有效,無借位。TMR0>W時間到,掃描按鍵 GOTO KEND ;未到,結(jié)束 MOVLW 2 SUBWF FKEYSTATE ;FANKEY在等待釋放嗎? BTFSC STATUS,Z ;Z清除,不相等。繼續(xù)執(zhí)行后續(xù)指令 GOTO FKP ;是,執(zhí)行按鍵功能。 MOVLW 2 SUBWF HKEYSTATE ;HOTKEY在等待釋放嗎? BTFSC STATUS,Z ;Z清除,不相等。繼續(xù)執(zhí)行后續(xù)指令 GOTO & |
| 2樓: | >>參與討論 |
| 作者: XIEYUANBIN 于 2005/1/18 18:26:00 發(fā)布:
如果不試,我也不知道好壞。 幾個簡單的問題: 第一,除ICD調(diào)試外,第1句不必是NOP,你現(xiàn)在每個子程序都有,更加不必。 第二,程序最后沒有結(jié)束符“END”,這將導(dǎo)致編譯錯誤。 第三,你的檔位查詢使用實(shí)際值做減法比較,這樣效率比較低,不如用查表的方法。 另外,你可以問經(jīng)銷商(比如北京集萬訊010-68716090)申請幾個16F54樣品先試燒,這樣就不用怕程序?qū)戝e。 其它錯誤沒時間看,你要試了才知道。 還有,現(xiàn)在張明峰版主因?yàn)榈絼e的公司高升,所以不再擔(dān)任這里的版主。 下次提問,請不要“直接尋址”,給其他網(wǎng)友一個機(jī)會。這也是張版主的一貫宗旨。 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |