|
Tài trợ cho PIC Vietnam |
Điều khiển Lý thuyết điều khiển và ứng dụng lý thuyết điều khiển trong những trường hợp thực tế |
|
Ðiều Chỉnh | Xếp Bài |
21-09-2010, 12:30 AM | #1 |
Đệ tử 2 túi
Tham gia ngày: Sep 2010
Bài gửi: 41
: |
khong hieu sai o dau
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 |
|
|