|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
|
14-09-2010, 05:39 PM | #1 |
Đệ tử 5 túi
Tham gia ngày: Jan 2010
Bài gửi: 114
: |
tại sao 16f57 khi viết mấy dòng lệnh nhỏ đã hết dung lượng nhỉ?
#include <htc.h>//PIC16F57
__CONFIG(HS & WDTDIS ); #ifndef _XTAL_FREQ #define _XTAL_FREQ 20000000 #endif unsigned char i; int main() { TRISA=0X00; TRISB=0X00; TRISC=0X00; while(1) { RA0=1; for(i=0;i<5;i++) __delay_ms(20); RA0=0; RA1=1; for(i=0;i<5;i++) __delay_ms(20); RA1=0; RA2=1; for(i=0;i<5;i++) __delay_ms(20); RA2=0; RA3=1; for(i=0;i<5;i++) __delay_ms(20); RA3=0; RB0=1; for(i=0;i<5;i++) __delay_ms(20); RB0=1; for(i=0;i<5;i++) __delay_ms(20); RB0=0; RB1=1; for(i=0;i<5;i++) __delay_ms(20); RB1=0; RB2=1; for(i=0;i<5;i++) __delay_ms(20); RB2=0; RB3=1; for(i=0;i<5;i++) __delay_ms(20); RB3=0; RB4=1; for(i=0;i<5;i++) __delay_ms(20); RB4=1; for(i=0;i<5;i++) __delay_ms(20); RB4=0; RB5=1; for(i=0;i<5;i++) __delay_ms(20); RB5=0; RB6=1; for(i=0;i<5;i++) __delay_ms(20); RB6=0; RB7=1; for(i=0;i<5;i++) __delay_ms(20); RB7=0; RC0=1; for(i=0;i<5;i++) __delay_ms(20); RC0=0; RC1=1; for(i=0;i<5;i++) __delay_ms(20); RC1=0; RC2=1; for(i=0;i<5;i++) __delay_ms(20); RC2=0; RC3=1; for(i=0;i<5;i++) __delay_ms(20); RC3=0; RC4=1; for(i=0;i<5;i++) __delay_ms(20); RC4=0; RC5=1; for(i=0;i<5;i++) __delay_ms(20); RC5=0; RC6=1; for(i=0;i<5;i++) __delay_ms(20); RC6=0; RC7=1; for(i=0;i<5;i++) __delay_ms(20); RC7=0; } } khi dịch thì báo lỗi như thế này: Error [1347] ; 0. can't find 0x2BC words (0x2bc withtotal) for psect "maintext" in segment "CODE" (largest unused contiguous range 0x200) lạ thật đấy mới có cho nháy led các port mà đã hết bộ nhớ vậy làm sao mà làm được biển quảng nhấp nháy liệu có con nào có Ram lớn hơn nhưng cùng chân cẳng thay thế con này ko các bác nhỉ? cám ơn! |
14-09-2010, 09:28 PM | #2 |
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 9
: |
ko phải là hết bộ nhớ mà là do cách viết của bạn ( dài, cùng một kiểu trong một chuơng trình) mình cũng đã từng bị như thế, viết một loạt khoảng 20 câu lệnh if thì bị....bạn tách ra thành nhiều đoạn chuơng trình con thì sẽ hết
|
14-09-2010, 09:48 PM | #3 | |
Đệ tử 5 túi
Tham gia ngày: Jan 2010
Bài gửi: 114
: |
Trích:
đúng là mình đang viết 17 câu lệnh if else liền nhau, và nó cũng báo như trên? bạn có thể chỉ rõ hơn cách tách ra để ko bị báo hết bộ nhớ như trên được ko? cám ơn! |
|
15-09-2010, 10:31 AM | #4 | |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Trích:
#include <htc.h>//PIC16F57 __CONFIG(HS & WDTDIS ); #ifndef _XTAL_FREQ #define _XTAL_FREQ 20000000 #endif unsigned char i; void kieu_1(void); void kieu_2(void); void kieu_3(void); int main() { TRISA=0X00; TRISB=0X00; TRISC=0X00; while(1) { kieu_1(); kieu_2(); kieu_3(); } } void kieu_1() { RA0=1; for(i=0;i<5;i++) __delay_ms(20); RA0=0; RA1=1; for(i=0;i<5;i++) __delay_ms(20); RA1=0; RA2=1; for(i=0;i<5;i++) __delay_ms(20); RA2=0; RA3=1; for(i=0;i<5;i++) __delay_ms(20); RA3=0; RB0=1; } void kieu_2() { for(i=0;i<5;i++) __delay_ms(20); RB0=1; for(i=0;i<5;i++) __delay_ms(20); RB0=0; RB1=1; for(i=0;i<5;i++) __delay_ms(20); RB1=0; RB2=1; for(i=0;i<5;i++) __delay_ms(20); RB2=0; RB3=1; for(i=0;i<5;i++) __delay_ms(20); RB3=0; RB4=1; } void kieu_3() { for(i=0;i<5;i++) __delay_ms(20); RB4=1; for(i=0;i<5;i++) __delay_ms(20); RB4=0; RB5=1; for(i=0;i<5;i++) __delay_ms(20); RB5=0; RB6=1; for(i=0;i<5;i++) __delay_ms(20); RB6=0; RB7=1; for(i=0;i<5;i++) __delay_ms(20); RB7=0; RC0=1; for(i=0;i<5;i++) __delay_ms(20); RC0=0; RC1=1; for(i=0;i<5;i++) __delay_ms(20); RC1=0; RC2=1; for(i=0;i<5;i++) __delay_ms(20); RC2=0; RC3=1; for(i=0;i<5;i++) __delay_ms(20); RC3=0; RC4=1; for(i=0;i<5;i++) __delay_ms(20); RC4=0; RC5=1; for(i=0;i<5;i++) __delay_ms(20); RC5=0; RC6=1; for(i=0;i<5;i++) __delay_ms(20); RC6=0; RC7=1; for(i=0;i<5;i++) __delay_ms(20); RC7=0; }
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
|
|
|