Re: 請各位先進可以幫我看一下PIC CCS的程式是否正確?
|
||||
---|---|---|---|---|
資深會員
|
Project -> Build options -> Project
CCSC C Compiler -> 勾選Compile for use with ICD Debugger
發表於: 2009/3/25 10:51
|
|||
|
Re: 請各位先進可以幫我看一下PIC CCS的程式是否正確?
|
||||
---|---|---|---|---|
資深會員
|
哇.......
大哥 你帳號好多gy ㄛ 真是 gy 呢 ........ ㄏㄏ........
發表於: 2009/3/25 9:24
|
|||
|
Re: 請各位先進可以幫我看一下PIC CCS的程式是否正確?
|
||||
---|---|---|---|---|
新會員
|
參照:
請問"Compile for use with ICD Debugger"這個選項是在哪裡設定?謝謝
發表於: 2009/3/24 23:17
|
|||
|
Re: 請各位先進可以幫我看一下PIC CCS的程式是否正確?
|
||||
---|---|---|---|---|
資深會員
|
建議LCM1.C不需要再加入#include.#fuse等的設定,因為在MAIN裡已宣告了,在LCM1.C第一行include LCM1.h,MAIN.c再include LCM1.c
參照:
發表於: 2009/3/24 17:59
|
|||
|
Re: 請各位先進可以幫我看一下PIC CCS的程式是否正確?
|
||||
---|---|---|---|---|
資深會員
|
以下是我的Disassembly,給你參考一下.
PS:記得勾選Compile for use with ICD Debugger --- D:\temp\LCM1.h -------------------------------------------------------------------- 1: void lcmreg(); 2: 3: //將暫存器值存入暫存器內 4: void lcmreg() 5: { 6: output_low(PIN_H7); //將RA8816晶片致能(low signal) 0004 9E99 BCF 0xf99, 0x7, ACCESS 0006 9E90 BCF 0xf90, 0x7, ACCESS 7: output_low(PIN_H6); //設定選擇信號為command(low signal) 0008 9C99 BCF 0xf99, 0x6, ACCESS 000A 9C90 BCF 0xf90, 0x6, ACCESS 8: delay_cycles(1); 000C 0000 NOP 9: } 000E EF1C GOTO 0x38 --- D:\temp\main.c -------------------------------------------------------------------- 1: #include <18F85J10.h> 0000 EF09 GOTO 0x12 2: //#include <stdlib.h> 3: #include "LCM1.h" 4: #use fast_io(A) 5: #fuses NOWDT,NOSTVREN,NOXINST,DEBUG,NOPROTECT,\ 6: H4_SW,FCMEN,NOIESO,WDT32768,NOEASHFT,MCU,BW16,CCP2C1,ECCPE 7: #use delay(clock=40M,oscillator=8M) //PIC單晶片處理速度=40MHz 8: #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //傳送腳=C6;接收腳=C7 9: 10: 11: void main(void) 12: { 0012 6AF8 CLRF 0xff8, ACCESS 0014 9ED0 BCF 0xfd0, 0x7, ACCESS 0016 6AEA CLRF 0xfea, ACCESS 0018 6AE9 CLRF 0xfe9, ACCESS 001A 867E BSF 0xf7e, 0x3, ACCESS 001C 0E11 MOVLW 0x11 001E 6EAF MOVWF 0xfaf, ACCESS 0020 0E04 MOVLW 0x4 0022 6E7F MOVWF 0xf7f, ACCESS 0024 0EA6 MOVLW 0xa6 0026 6EAC MOVWF 0xfac, ACCESS 0028 0E90 MOVLW 0x90 002A 6EAB MOVWF 0xfab, ACCESS 002C 50C1 MOVF 0xfc1, W, ACCESS 002E 0BC0 ANDLW 0xc0 0030 6EC1 MOVWF 0xfc1, ACCESS 0032 0E07 MOVLW 0x7 0034 6EB4 MOVWF 0xfb4, ACCESS 13: while (1) 14: { 15: lcmreg(); 0036 D7E6 BRA 0x4 16: } 0038 D7FE BRA 0x36 003A 0003 SLEEP
發表於: 2009/3/24 17:51
|
|||
|
Re: 請各位先進可以幫我看一下PIC CCS的程式是否正確?
|
||||
---|---|---|---|---|
新會員
|
我的CCS版本是4.084
但若將上面的程式改成以下: main.c #include "18F85J10.h" //#include <stdlib.h> #include "LCM1.h" #fuses NOWDT,NOSTVREN,NOXINST,DEBUG,NOPROTECT,H4_SW,FCMEN,NOIESO,WDT32768,NOEASHFT,MCU,BW16,CCP2C1,ECCPE #use delay(clock=40M,oscillator=8M) //PIC單晶片處理速度=40MHz #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //傳送腳=C6;接收腳=C7 void main(void) { while (1) { lcmreg(); } } 增加 lcm1.c #include <18F85J10.h> #fuses NOWDT,NOSTVREN,NOXINST,DEBUG,NOPROTECT,H4_SW,FCMEN,NOIESO,WDT32768,NOEASHFT,MCU,BW16,CCP2C1,ECCPE #use delay(clock=40M,oscillator=8M) //PIC單晶片處理速度=40MHz //將暫存器值存入暫存器內 void lcmreg() { output_low(PIN_H7); //將RA8816晶片致能(low signal) output_low(PIN_H6); //設定選擇信號為command(low signal) delay_cycles(1); output_c(0x03); } LCM1.h 程式內容則改成以下: void lcmreg(); 則會出現以上相同的錯誤情形
發表於: 2009/3/24 17:39
|
|||
|
Re: 請各位先進可以幫我看一下PIC CCS的程式是否正確?
|
||||
---|---|---|---|---|
資深會員
|
因為手邊沒有18F85J10的板子,只好建了一個軟體模擬的專案,完全用你的CODE下去跑,並沒有你說的問題,請問你的CCS版本是多少?
發表於: 2009/3/24 17:31
|
|||
|
請各位先進可以幫我看一下PIC CCS的程式是否正確?
|
||||
---|---|---|---|---|
新會員
|
這是我第一次使用C語言編譯
總共有兩個檔: main.c: #include <18F85J10.h> //#include <stdlib.h> #include "LCM1.h" #use fast_io(A) #fuses NOWDT,NOSTVREN,NOXINST,DEBUG,NOPROTECT,\ H4_SW,FCMEN,NOIESO,WDT32768,NOEASHFT,MCU,BW16,CCP2C1,ECCPE #use delay(clock=40M,oscillator=8M) //PIC單晶片處理速度=40MHz #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //傳送腳=C6;接收腳=C7 void main(void) { while (1) { lcmreg(); } } LCM1.h void lcmreg(); //將暫存器值存入暫存器內 void lcmreg() { output_low(PIN_H7); //將RA8816晶片致能(low signal) output_low(PIN_H6); //設定選擇信號為command(low signal) delay_cycles(1); } 錯誤: 程式雖然沒有出現錯誤,但是單步執行時,完全沒辦法正常執行,會跳到不應該執行的地方,希望先進可以指導我哪裡出錯了
發表於: 2009/3/24 16:54
|
|||
|