|
|||||||||||
| 技術(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 |
花50元可以幫我解決這個程序嗎? |
| 作者:lulu99 欄目:單片機(jī) |
我第一次用PIC單片機(jī)做程序,這個程序要實(shí)現(xiàn)以下功能: 1。利用RTCC記數(shù),RTCC利用220V電源的頻率自增。 2。每一秒RB4控制一個發(fā)光二極管閃爍一次 3。每二分鐘控制RA0控制一個繼電器動作一次 4。每12小時(shí)RA1控制一個電磁閥動作一次 我怎么也找不出有什么毛。 請高手看看: list p=16C54 #include <p16c5x.inc> ORG 000H MAIN: NOP CLRF 1 CLRWDT L1: CLRF 08H ;1S_FLASH flag CLRF 09H ;gass_SWITCH flag CLRF 0AH ;water_SWITCH flag CLRF 0BH ;second counter CLRF 0CH ;minuter counter CLRF 0DH ;hour counter CLRF 0EH ;gass_delay counter CLRF 0FH ;water_delay counter MOVLW 04H TRIS 5 ;RA 0000 0100 MOVLW 0FH TRIS 6 ;RB 0000 1111 MOVLW 3FH OPTION ;rtcc PULSE from 50hz ,WDT 1:128 =2.5S L2: NOP ;capture pointer NOP NOP MOVLW 32H SUBWF 01H, 0 ; f01h-w--->w 32H=50 50*0.02=1S BTFSS 03H, 0 ;if "c"=0 show (f1) <(w) GOTO L2 ; waitting until 1s CLRWDT CLRF 1 INCF 0BH, 1 ;second conter add 1 BTFSC 0AH,0 ;check whether opened water_SWITCH INCF 0FH,1 ;if opened water_delaycounter add 1 MOVLW 02H ;check whether 2s arrived SUBWF 0FH,0 BTFSS 03H,0 ;if "c"=0 show (f1) <(w) GOTO L3 CLRF 0FH ;water_delay 2S arrived BCF 0AH,0 BSF 5,1 ;CLOSE water_SWITCH L3: MOVLW 01H ; every 1s rb4 FLASH XORWF 08H,1 BTFSC 08H,0 BCF 6,4 BTFSS 08H,0 BSF 6,4 ;************************************************************************************************ MOVLW 3CH ;check whether 1 minuter arrived SUBWF 0BH,0 BTFSS 03H,2 ;if "z"=1 show (f0bh)=(w) GOTO L2 CLRF 0BH ;1 minute arrived INCF 0CH ,1 ;minuter counter add1 INCF 0EH ,1 ;gass_delay counter add 1 MOVLW 02H ;if 2 minute arrived set gass_SWITCH flag SUBWF 0EH,0 BTFSS 03H,2 GOTO L4 CLRF 0EH MOVLW 01H ;2 minuter arrived SWITCH gas_SWITCH XORWF 09H,1 BTFSC 09H,0 BSF 5,0   |
| 2樓: | >>參與討論 |
| 作者: liangyh88 于 2004/3/11 10:41:00 發(fā)布:
請注意“體選位”的設(shè)置 你這個程序通過軟件仿真來調(diào)試一下是比較容易的,通過仿真比較容易發(fā)現(xiàn)一些簡單的問題,以便解決 |
|
| 3樓: | >>參與討論 |
| 作者: ddddgggg 于 2004/3/11 11:03:00 發(fā)布:
不知接RTCC的硬件上有沒有濾波? 因?yàn)殡娏W(wǎng)中雜波既燥聲干擾很多,而且,地區(qū)不同50HZ的頻率也有小差異而導(dǎo)致計(jì)時(shí)累計(jì)不準(zhǔn)確。 |
|
| 4樓: | >>參與討論 |
| 作者: shaoguang 于 2004/3/11 13:33:00 發(fā)布:
只要不串進(jìn)大電流,I/O口是沒有問題的 他是ST的 |
|
| 5樓: | >>參與討論 |
| 作者: lulu99 于 2004/3/11 16:48:00 發(fā)布:
主要問題 我主要向大家問以下問題: L2: NOP ;capture pointer NOP NOP MOVLW 32H SUBWF 01H, 0 ; f01h-w--->w 32H=50 50*0.02=1S BTFSS 03H, 0 ;if "c"=0 show (f1) <(w) GOTO L2 ; waitting until 1s CLRWDT CLRF 1 1。以上程序段利用RTCC對50HZ記數(shù)到 32H即 50*1/50=1s 有沒有問題? 我不要求記數(shù)太精確。 2。采用RTCC記數(shù),分頻器分配給WDT ,WDT 預(yù)分頻為1:128 是不是說 WDT最長 128*0.02=2.56s復(fù)位 3。我手頭沒有防真器。PIC16C54是不是只有JW(UVEPROM)與RC(OTP) 兩種 54有沒有E2PROM? 勞駕大家了! |
|
| 6樓: | >>參與討論 |
| 作者: H熊 于 2004/3/11 19:20:00 發(fā)布:
賦初值的地方不對 應(yīng)在循環(huán)外面 |
|
| 7樓: | >>參與討論 |
| 作者: lockma 于 2004/3/11 23:03:00 發(fā)布:
PIC單片機(jī)程序 其實(shí)不要求記數(shù)太精確,可不用 50Hz 的電源當(dāng)信號,采用 4MHZ 的晶振,(或陶瓷振蕩),直接用 RTCC 計(jì)數(shù),簡簡單單的程序,就可得到 千分之2 的誤差,(每千秒的誤差在兩秒之內(nèi)). 采用 4MHZ 的晶振時(shí),把 Option 的 RTCC 分頻比率設(shè)為 64,在將 RTCC 參數(shù)設(shè)為 '計(jì)數(shù) 156', 這樣便可得到 9.984ms 。 (1/4.00) * 4 = 1us 1 * 64 = 64us 64us * 156 = 9984us = 9.984ms 把 9.984 ms 當(dāng)做 10ms 去計(jì)數(shù),就可得到 0.2 % 誤差的時(shí)間計(jì)數(shù)器.(0.16%) ☆☆☆ 若要做到 低于 "十萬分之一" 以下的誤差,只要將晶振改為 4.096 MHz 的頻率晶振,即可輕輕松松的達(dá)到目地. |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |