![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 5 túi
Tham gia ngày: Jan 2010
Bài gửi: 96
: |
cảm bạn rất nhiều. và cảm ơn các bác đã cùng chia se với mình... mình sẻ nghiên cứu... thank 100 phát.
tra loi ý của bạn stupid11 là mình muốn kiểm trả giá trị 0 hay 1 của 1 chân trong 1 port. vì thế mình có thể làm các phím nhấn để khởi chạy 1 chuong trình cong bên tring PIC //////////////// if( RA0 == 0) { core } //////////////// thank bạn nhiều. thay đổi nội dung bởi: lambaotrung, 31-03-2011 lúc 12:18 AM. |
![]() |
![]() |
![]() |
#2 |
Đệ tử 6 túi
|
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 5 túi
Tham gia ngày: Sep 2010
Bài gửi: 107
: |
![]() Anh chỉ giáo cho em rõ thêm về một số đoạn code này với em chưa hiểu lắm //char const ht[]={'0','1','2','3','4','5','6','7','8','9',' '}; // 0192: MOVF 26,W 0193: MOVWF 2D 0194: MOVLW 0A 0195: MOVWF 2E 0196: CALL 158 0197: MOVF 77,W 0198: MOVWF 28 .................... chuc=y/10; 0199: MOVF 26,W 019A: MOVWF 2D 019B: MOVLW 0A 019C: MOVWF 2E 019D: CALL 158 019E: MOVF 78,W 019F: MOVWF 27 .................... z=(x-y)*100; 01A0: CLRF 2E 01A1: MOVF 26,W 01A2: MOVWF 2D 01A3: CALL 050 01A4: BSF 03.1 01A5: MOVF 23,W 01A6: MOVWF 30 01A7: MOVF 22,W 01A8: MOVWF 2F 01A9: MOVF 21,W 01AA: MOVWF 2E 01AB: MOVF 20,W 01AC: MOVWF 2D 01AD: MOVF 7A,W 01AE: MOVWF 34 01AF: MOVF 79,W 01B0: MOVWF 33 01B1: MOVF 78,W 01B2: MOVWF 32 01B3: MOVF 77,W 01B4: MOVWF 31 * 02F5: MOVF 77,W 02F6: MOVWF 2D 02F7: MOVF 78,W 02F8: MOVWF 2E 02F9: MOVF 79,W 02FA: MOVWF 2F 02FB: MOVF 7A,W 02FC: MOVWF 30 02FD: MOVF 30,W 02FE: MOVWF 34 02FF: MOVF 2F,W 0300: MOVWF 33 0301: MOVF 2E,W 0302: MOVWF 32 0303: MOVF 2D,W 0304: MOVWF 31 0305: CLRF 38 0306: CLRF 37 0307: MOVLW 48 0308: MOVWF 36 0309: MOVLW 85 030A: MOVWF 35 * 037F: MOVF 7A,W 0380: MOVWF 30 0381: MOVF 79,W 0382: MOVWF 2F 0383: MOVF 78,W 0384: MOVWF 2E 0385: MOVF 77,W 0386: MOVWF 2D 0387: CALL 139 0388: MOVF 78,W 0389: MOVWF 2A .................... le1=z/10; 038A: MOVF 2A,W 038B: MOVWF 2D 038C: MOVLW 0A 038D: MOVWF 2E 038E: CALL 158 038F: MOVF 78,W 0390: MOVWF 2B .................... le2=z%10; 0391: MOVF 2A,W 0392: MOVWF 2D 0393: MOVLW 0A 0394: MOVWF 2E 0395: CALL 158 0396: MOVF 77,W 0397: MOVWF 2C .................... portb=0x38; 0398: MOVLW 38 0399: MOVWF 06 .................... lenh(); 039A: CALL 182 .................... portb=0x0e; 039B: MOVLW 0E 039C: MOVWF 06 .................... lenh(); 039D: CALL 182 .................... portb=0x80; 039E: MOVLW 80 039F: MOVWF 06 .................... lenh(); 03A0: CALL 182 .................... portb=0x0c; 03A1: MOVLW 0C 03A2: MOVWF 06 .................... lenh(); 03A3: CALL 182 .................... for(i=0;i<9;i++) 03A4: CLRF 29 03A5: MOVF 29,W 03A6: SUBLW 08 03A7: BTFSS 03.0 03A8: GOTO 3B0 .................... { .................... portb=ht1[i]; 03A9: MOVF 29,W 03AA: CALL 013 03AB: MOVWF 78 03AC: MOVWF 06 .................... xuat(); 03AD: CALL 18A .................... } 03AE: INCF 29,F 03AF: GOTO 3A5 .................... portb=0x89; 03B0: MOVLW 89 03B1: MOVWF 06 .................... lenh(); 03B2: CALL 182 .................... if(chuc==0) 03B3: MOVF 27,F 03B4: BTFSS 03.2 03B5: GOTO 3B8 .................... {chuc=10;} 03B6: MOVLW 0A 03B7: MOVWF 27 .................... chuc; .................... portb=ht[chuc]; 03B8: MOVF 27,W 03B9: CALL 004 03BA: MOVWF 78 03BB: MOVWF 06 .................... xuat(); 03BC: CALL 18A .................... portb=ht[dv]; 03BD: MOVF 28,W 03BE: CALL 004 03BF: MOVWF 78 03C0: MOVWF 06 .................... xuat(); 03C1: CALL 18A .................... portb=0b00101110; 03C2: MOVLW 2E 03C3: MOVWF 06 .................... xuat(); 03C4: CALL 18A .................... portb=ht[le1]; 03C5: MOVF 2B,W 03C6: CALL 004 03C7: MOVWF 78 03C8: MOVWF 06 .................... xuat(); 03C9: CALL 18A .................... portb=ht[le2]; 03CA: MOVF 2C,W 03CB: CALL 004 03CC: MOVWF 78 03CD: MOVWF 06 .................... xuat(); 03CE: CALL 18A .................... portb=0b11011111; 03CF: MOVLW DF 03D0: MOVWF 06 .................... xuat(); 03D1: CALL 18A .................... portb=0b01000011; 03D2: MOVLW 43 03D3: MOVWF 06 .................... xuat(); 03D4: CALL 18A .................... portb=0xc0; 03D5: MOVLW C0 03D6: MOVWF 06 .................... lenh(); 03D7: CALL 182 .................... for(i=0;i<14;i++) 03D8: CLRF 29 03D9: MOVF 29,W 03DA: SUBLW 0D 03DB: BTFSS 03.0 03DC: GOTO 3E4 .................... { .................... portb=ht3[i]; 03DD: MOVF 29,W 03DE: CALL 021 03DF: MOVWF 78 03E0: MOVWF 06 .................... xuat(); 03E1: CALL 18A .................... } 03E2: INCF 29,F 03E3: GOTO 3D9 .................... portb=0xc0; 03E4: MOVLW C0 03E5: MOVWF 06 .................... lenh(); 03E6: CALL 182 |
![]() |
![]() |
![]() |
#4 |
Đệ tử 6 túi
|
Bạn dịch từ CCS sang ASM à..như vậy thì sao mà mình giải thích được..bạn đưa code CCS lên rồi anh em cùng giải quyết.
-Còn chương trình hiển thị nhiệt độ trên LCD mình đã test luôn trên phần cứng rồi..ko sai đâu bạn.. |
![]() |
![]() |
![]() |
#5 | |
Đệ tử 2 túi
Tham gia ngày: Mar 2011
Bài gửi: 27
: |
biên dịch nó báo thế này là sao bạn "*error 18 "123(mani).c" Line 0(0,1): file can not be opend "
Trích:
adc 10bit 0-1023 ,mà V_ref = VCC=5V nên ADC_value=1 tương ứng 5/1024=4.887mV Trong khi đó LM335 cho ra điện áp là 10mV/1K nên để giá trị ADC thay đổi 1 đơn vị thì nhiệt độ phải thay đổi là 2K => x= ADC_value*(4.887/10) thay đổi nội dung bởi: pdkxlily, 05-07-2011 lúc 10:25 AM. |
|
![]() |
![]() |
![]() |
#6 |
Đệ tử 6 túi
|
-Ý bạn là khi nhấn phím thì sẽ thực thi 1 chương trình nào đó chứ gì...mình đã trình bày ở trong file TEST.RAR rồi mà.
-Còn đây là chương trình đếm SP hiển thị lên LCD. -Mình cũng mới nghiên cứu PIC thôi,cũng chưa rành lắm đâu...Nhưng nếu trong phạm vi giúp bạn được thì mình sẽ giúp...nếu có gì sai sót bạn cứ chỉ dạy.,ko có vấn đề gì cả..mình lên picvietnam là để cùng giao lưu học hỏi mà. |
![]() |
![]() |
![]() |
#7 | |
Đệ tử 6 túi
|
![]() Trích:
Thưởng khi sử dụng phím nhấn thì phải chờ nhấn -nhả vd: if(RA0==0) //phím đã được nhấn// { do{}while(RA0==0);//chờ phím nhả ra //nếu phím chưa được buông thỉ ko làm gì cả// a++; //tăng giá trị a lên 1 đv } nếu bạn chỉ sử dụng: if(RA0==0) { a++; } với code như vậy thì 1 lần nhấn phím của bạn,,thì giá trị của a ko fai tăng lên 1 mà là 1 con số nào đó tùy thuộc vào thạch anh...(sẽ rất lớn)...tại vì khi bạn nhấn xuống và nhả ra tối thiểu phải mất vài chục ms.,thậm chí cả giây..như vậy a cứ tăng lên khi nào bạn nhả ra thì thôi.Chắc bạn đẫ hiểu rồi chứ -1 gợi ý nữa,bạn có thể sử dụng ngắt.cái này thì đơn giản hơn..mình đã trình bày trong file DemSanPham_LCD.rar |
|
![]() |
![]() |
![]() |
|
|