lắp ráp mã để truyền dữ liệu trong bộ nhớ PIC

C

ceibawx

Guest
Ai có thể giúp tôi kiểm tra xem nó?
Tôi lưu trữ dữ liệu trong PIC, nhưng sản lượng là không đúng.TransData:
Movlw 0xBF
Movwf FSR; TO RAM
Movlw 0x08
Movwf ChannelCounter; ChannelCounter = 4 * 2

GoOnTransData:
bsf STATUS, 5
Movf INDF, W
bcf STATUS, 5
Movwf TXREG; Di chuyển dữ liệu cho truyền đăng ký
bsf STATUS, 5
INCF FSR, 1; INDF địa chỉ số di chuyển tiếp theo
DECFSZ ChannelCounter, 1; ChannelCounter-1
goto GoOnTransData; cc = 0!.
goto ReProcess; cc = 0.tx kết thúc, bắt đầu một rx mới.

 
Tôi nghĩ vấn đề của bạn là bạn có ghi đè các TXREG.Bạn cần phải kiểm tra cờ TXIF để xem khi TXREG trống kiến sau đó nạp byte mới.
Xem dưới đây cho một sửa chữa có thể.Tôi giả sử các thiết lập UART đã làm đúng, đó là chút TXEN đã được thiết lập.Điều đó sẽ đặt TXIF.Hãy chắc chắn rằng bạn sử dụng để thiết lập bsf TXEN, hơn là viết thư này để đăng ký.Bạn có thể thêm rằng chỉ dẫn ngay trước GoOnTransData, nếu nó không được làm trước đó.

By the way, kể từ khi bạn đang sử dụng FSR, bạn không cần phải thiết lập và rõ ràng các bit RP0; các FSR có thể truy cập vào dữ liệu chính xác trong các ngân hàng 0 và 1 với IRP = 0, bất kể bang RP0, 1 .

Mã số:TransData:

Movlw 0xBF

Movwf FSR; TO RAM

Movlw 0x08

Movwf ChannelCounter; ChannelCounter = 4 * 2bsf STATUS, RP0; ngân hàng 1

bsf TXSTA, TXEN; phép xmit

bcf STATUS, Rp0; ngân hàng 0 một lần nữaGoOnTransData:

btfss PIR1, TXIF; kiểm tra xem chúng tôi có thể gửi byte mới

goto GoOnTransDataMovf INDF, W; nhận được byte

Movwf TXREG; Di chuyển dữ liệu cho truyền đăng ký

INCF FSR, 1; INDF địa chỉ số di chuyển tiếp theo

DECFSZ ChannelCounter, 1; ChannelCounter-1

goto GoOnTransData; cc = 0!.

goto ReProcess; cc = 0.tx kết thúc, bắt đầu một rx mới.
 
Cảm ơn bạn đã trả lời của bạn.
Câu hỏi của tôi là gì nó nghĩa là gì?

khi TXIF = 1, đệm trống, nó sẽ ---------------------
Movf INDF, W; nhận được byte
Movwf TXREG; Di chuyển dữ liệu cho truyền đăng ký
khi TXIF = 0, bộ đệm đầy, nó sẽ ------------------------
GoOnTransData:
btfss PIR1, TXIF; kiểm tra xem chúng tôi có thể gửi byte mới
goto GoOnTransData.

Bạn có thể giải thích chi tiết hơn về truyền đệm?nếu nó vẫn còn đầy đủ, chúng tôi phải chờ cho tới khi nó được sản phẩm nào?

 
Có, nó có nghĩa là truyền đệm là trống rỗng, và bạn có thể viết một byte mới với nó.Nếu bạn làm điều đó trước khi nó có sản phẩm nào, sau đó viết của bạn sẽ bị bỏ qua và bạn sẽ mất ký tự.

Thiết TXEN sẽ đặt TXIF, alowing đoạn code để chạy cho các nhân vật đầu tiên bạn gửi.Sau đó, bạn phải đợi cho các nhân vật truyền dẫn trước để hoàn thành.

As soon as you write to TXREG, TXIF will be cleared, so if you check this bit you will not be able to write a new byte to TXREG until it's empty. Mọi chi tiết, đọc các tập tin đính kèm
Xin lỗi, nhưng bạn cần phải đăng nhập để xem tập tin đính kèm này

 
Cảm ơn rất nhiều.
Và tôi đã được thử nghiệm, và mã số của bạn là hữu ích, và tôi đã nhận được dữ liệu dự kiến.

Bạn đang lớn mạnh.
Chúc một ngày vui vẻ.Xing

 

Welcome to EDABoard.com

Sponsor

Back
Top