![]() |
|
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 |
![]() |
#11 |
Đệ tử 2 túi
Tham gia ngày: Sep 2010
Bài gửi: 41
: |
các bác cho em hỏi tý
em muốn tao ra một chương trình trễ dài 2 phút để điều khiển mở cho rơ le, tuy nhiên em viết chương trình của em như sau: processor 16f877a include <p16f877a.INC> TG1 EQU 0X20 TG2 EQU 0X21 TG3 EQU 0X22 org 0x000 bsf STATUS,RP0 bcf STATUS,RP1 MOVLW 0X00 MOVWF TRISB BCF STATUS,RP0 MOVLW 0X01 MOVWF PORTB gửi ra chan rb0 bit 1 CALL DELAY gọi trễ MOVLW 0X00 MOVWF PORTB LOOP GOTO LOOP ;treo chương trình ket thuc chuong trinh tai day DELAY MOVLW x ;x y z la cac gia tri tong quat MOVWF TG1 MOVLW y MOVWF TG2 MOVLW z MOVWF TG3 LABLE1 DECFSZ TG1 GOTO LABLE2 GOTO EXIT LABLE2 DECFSZ TG2 GOTO LABLE3 MOVLW y MOVWF TG2 GOTO LABLE1 LABLE3 DECFSZ TG3 GOTO LABLE3 MOVLW z MOVWF TG3 GOTO LABLE2 EXIT RETURN END theo em tinh toán thi mỗi lệnh goto cho 2 chu kỳ lệnh, như thế khi cho số x y z cho trước em tính được thời gian trễ delay sẽ là {3(x-1){(3y-1)[3(z-1)+4]+4} + 10 }*4/4Mhz (vơi bộ dao động 4 Mhz) vậy khi cho x,y z =255 thì phải được thời gian trễ rất lớn 1 phút tuy nhiên khi em mô phỏng trên protelus chưa đên 1 phút chân RB0 đã chuyển trạng thái từ 0 sang 1 rồi. em thử nghĩ ra 3 vòng lap long nhau nhu thoi hoc pascal ay ma mấy bác kiểm tra thuật toán dùm em được không, vì mới học pic nên em hơi bỡ ngơ,hic |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
Pic16f877a TỪ DỄ TỚi KhÓ | ntc | Cơ bản về vi điều khiển và PIC | 373 | 23-05-2009 10:24 PM |
CCS C for PIC16F877A | nhh | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 405 | 24-04-2008 12:00 PM |