![]() |
|
Tài trợ cho PIC Vietnam |
MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ... |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#10 |
Đệ tử 5 túi
Tham gia ngày: Sep 2006
Bài gửi: 100
: |
Bây giờ phân tích tiếp phần chương trình chính điều khiển động cơ của bạn nhé.
1. Phần khởi tạo các cổng vào ra, bạn cũng thiếu phần định nghĩa các chân cổng là digital I/O Code:
BSF STATUS, RP0 ; Select Bank 1 MOVLW 0x06 ; Configure all pins MOVWF ADCON1 ; as digital inputs BCF STATUS, RP0 ; Select Bank 0 2. Code:
MOVLW b'00000000' MOVWF PORTC MOVLW b'00000000' MOVWF PORTB MOVLW b'00100000' MOVWF PORTB MOVLW b'01000000' MOVWF PORTB MOVLW b'01100000' MOVWF PORTB MOVLW b'10000000' MOVWF PORTB MOVLW b'10100000' MOVWF PORTB MOVLW b'11000000' MOVWF PORTB MOVLW b'11100000' MOVWF PORTB Code:
MOVLW b'00000000' MOVWF PORTC MOVLW b'00000000' MOVWF PORTB Code:
MOVLW b'00000000' MOVWF PORTC MOVLW b'11100000' MOVWF PORTB Không hiểu bạn thay đổi liên tục giá trị ghi vào cổng B như vậy để làm gì. Nhưng nên nhớ là 1 lệnh của PIC thường chiếm có 1 chu kỳ máy, nghĩa là nếu bạn dùng thạch anh dao động 4 MHz, mỗi lệnh chỉ xảy ra trong 1us, rất rất nhỏ. Vậy bạn thay đổi PORTB liên tục như thế chẳng có ý nghĩa gì cả. Ở phần khởi tạo Timer1 chỉ viết thế này là đủ: Code:
CLRF T1CON CLRF INTCON BSF STATUS,RP0 CLRF PIE1 BSF PIE1,TMR1IE BCF STATUS,RP0 CLRF PIR1 MOVLW 0X27 MOVWF TMR1H MOVLW 0X10 MOVWF TMR1L Code:
TMR1H = 0xFC TMR1H = 0x17 Tạm thời như thế. Bạn sửa đi và nói lại cho tôi biết những lỗi xảy ra khi thiết bị hoạt động. Thân.
__________________
Do more than exist, LIVE |
![]() |
![]() |
|
|