![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển... |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Aug 2008
Bài gửi: 6
: |
truyen va nhan mot ki tu c#
Minh đang làm cái này moi nguoi xem qua xem có ổn không. Ý tưởng là ấn nút ở chân B tạo ngắt ngoài xong sau đó truyền 1 số và hiển thị nên texbox, wait 10s và wait 20s là thời gian chờ đợi để led đếm ngược 10s và 20s, các nút còn lại từ person 1 đến 5 khi ấn thì sẽ gửi kí tự xuống vdk thực hiện chương trình ngắt. Có một số vấn đề sau:
+ Việc sử dụng kiểu dữ liệu của tớ ở chương trình cshap vẫn chưa ổn. dạng char và string sau đó gửi số lên máy tính và nhận hiển thị như thế chưa đúng. + Tớ dùng cable chuyển usb và rs232 đã cài driver có cần phải thiết lập gì không? + Code của vdk nhận và truyền kí tự như vậy thế nào? code vdk Code:
#include "MAIN.h" #include <defs_16f877A.h> #define button1 RB4 #define button2 RB5 #define button3 RB6 #define button4 RB7 #define button5 RB0 #define led1 RC0 #define led2 RC1 #define led3 RC2 #define led4 RC3 #define led5 RC5 #define chuong RC4 #use rs232(baud=9600,parity=n,xmit=pin_C6,rcv=pin_C7) int8 const d[10]={0x40 0x79 0x24 0x30 0x19 0x12 0x02 0x78 0x00 0x10}; int8 hc,hdv; int16 count=0; int16 sec; int16 dsec; int8 mode=0; int dem=0; int chay=1; char nhan; #INT_RDA void ngat_UART() { nhan=getc(); if(nhan=="1"){chay=0;} if(nhan=="2"){chay=0;} if(nhan=="3"){chay=0;} if(nhan=="4"){chay=0;} if(nhan=="5"){chay=0;} if(nhan=="6"){chay=0;} if(nhan=="7"){chay=0;} } #INT_RB //ngat ngoai void ngat_RB() { if(button1==0){mode=1;} if(button2==0){mode=2;} if(button3==0){mode=3;} if(button4==0){mode=4;} } #INT_EXT void ngatngoai() { if(button5==0){mode=5;} } #INT_RTCC void ngat_timer0() { set_timer0(190); ++count; if(count==2976) {count=0;dsec++;} if(dsec==10) {dsec=0;sec--;} if(sec==0) {disable_interrupts(INT_RTCC);} } void tach(int16 variable) { hdv = variable%10; hc = variable/10; } //void program1(); //void program2(); //void program3(); //void program4(); //void program5(); void program1() { if(chay==1) { printf ("%u",1); led1=0;chuong=0; delay_ms(1200); chuong=1;delay_ms(1000);led1=1; } } void program2() { if(chay==1) { printf("%u",2); led2=0;chuong=0; delay_ms(1200); chuong=1;delay_ms(1000);led2=1; } } void program3() { if(chay==1) { printf("%u",3); led3=0;chuong=0; delay_ms(1200); chuong=1;delay_ms(1000);led3=1; } } void program4() { if(chay==1) { printf("%u",4); led4=0;chuong=0; delay_ms(1200); chuong=1;delay_ms(1000);led4=1; } } void program5() { if(chay==1) { printf("%u",5); led5=0;chuong=0; delay_ms(1200); chuong=1;delay_ms(1000);led5=1; } } void demnguoc() { if(chay==1) { sec=20; enable_interrupts(GLOBAL); enable_interrupts(INT_RTCC); set_timer0(190); while(1) { tach(sec); PORTA=0x02; PORTD=d[hdv]; delay_ms(1); PORTA=0x01; PORTD=d[hc]; delay_ms(1); if(sec==0) { dem++; if(dem==99) {dem=0;PORTA=0xff;break;} } } delay_ms(1000); PORTA=0; PORTD=0xff; } } void demnguoc1() { if(chay==1) { sec=10; enable_interrupts(GLOBAL); enable_interrupts(INT_RTCC); set_timer0(190); while(1) { tach(sec); PORTA=0x02; PORTD=d[hdv]; delay_ms(1); PORTA=0x01; PORTD=d[hc]; delay_ms(1); if(sec==0) { dem++; if(dem==99) {dem=0;PORTA=0xff;break;} } } delay_ms(1000); PORTA=0; PORTD=0xff; } } void main() { setup(); PORTB=0b11111111; // TODO: USER CODE!! enable_interrupts(GLOBAL);/////GIE=1;PEIE=1; ENABLE_INTERRUPTS(INT_RDA); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); enable_interrupts(INT_RB); enable_interrupts(INT_EXT); ext_int_edge(H_TO_L); set_timer0(190); PORTD=0xff; PORTA=0; PORTE=0; PORTC=0xff; while(1) { switch (mode) { case 1: {program1();mode=0;break;} case 2: {program2();mode=0;break;} case 3: {program3();mode=0;break;} case 4: {program4();mode=0;break;} case 5: {program5();mode=0;break;} case 6: {demnguoc();mode=0;break;} case 7: {demnguoc1();mode=0;break;} } } } //end// thay đổi nội dung bởi: phamminhtuan, 13-12-2010 lúc 05:04 PM. Lý do: Chú ý, để code trong tag [code] ... [/code] |
![]() |
![]() |
|
|