Bài giảng Vi xử lý - Chương 3: Vi điều khiển. Họ vi điều khiển 8051 (Phần 4)

Truyền dữ liệu khoảng cách xa

Tốc độ truyền dữ liệu thấp

Truyền dữ liệu nối tiếp đồng bộ

Dùng tín hiệu clock riêng để đồng bộ hóa mạch thu và phát.

Thường dùng khung dữ liệu lớn hơn và nhanh hơn.

Truyền dữ liệu nối tiếp bất đồng bộ

Không cần tín hiệu clock riêng để đồng bộ hoá chuyển dữ liệu.

Dựa trên ký tự. Mỗi ký tự được đóng khung bằng “start bit” và “stop bit”.

Bên thu cần nhận dạng “start bit” và “stop bit” để nhận đúng ký tự dữ liệu.

 

ppt44 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 422 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Vi xử lý - Chương 3: Vi điều khiển. Họ vi điều khiển 8051 (Phần 4), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Half-duplex link): đường dây có thể dùng cho phát hoặc thu nhưng mỗi lần chỉ có 1 chiều. Song công (Full-duplex link): Phát và thu có thể tiến hành đồng thời. Đường truyền cần 4 dây. 8Cơ bản về các đường truyền5V0V>+3V	Request to send(4)	-> carrier on 	carrier detect (8)	->	 data send 	data receive (3)	->send timing (24)	-> 	receive timing (17)	->EOT send (2)	-> EOT send	EOT receive (3)	->send timing (24)	->	receive timing (17)	->RTS off (4)	->	 error check	 carrier off	carrier off (8)	->	-	DTE XDCE XDCE YDTE YEIA-232EIA-23215Data Transmission ErrorsFraming error: when a received character is improperly framed by the start and stop bits; it is set by the absence of stop bit.Receive overrun: one or more characters in the data stream were lost.Parity error: received character parity error.16Null Modem ConnectionPin	Circuit name	DTE X	DTE Y22	Ring indicator	CE	CE20	Data terminal ready	CD	CD8	Data carrier detect	CF	CF6	Data set ready	CC	CC5	Clear to send	CB	CB4	Request to send	CA	CA3	Receive data	BB	BB2	Transmit data	BA	BA24	Transmitter timing	DA	DA17	Receiver timing	DD	DD7	Signal ground	AB	ABWhen 2 DTEs are very close, no need to use modems to connect them.17Interfacing a mp with 232Transmission:Convert data from parallel to serial formatAdd start, stop, and optional parity bits to the serial data.Translate the voltage levels to those of the EIA-232-E standard. (transceiver chip: MAX 232, MC145403, etc.)Reception:Translate the voltage levels of the incoming data stream to those used in the mp.Detect the start and stop bits.Optionally perform parity checkingConvert serial data into parallel format.18Sơ đồ khổi cổng nối tiếp của 8051Cùng địa chỉ19Các đặc tính của cổng nối tiếp 8051Song công (ful-duplex)Có đệm khi thu (bộ đệm 1 byte)Có 4 chế độ làm việc (0 - 3)Lập trình dễ dàng để: Chọn tốc độ (cố định (on-chip OSC/12 hoặc OSC/64), hoặc thay đổi được (T1)) Chọn chế độ làm việcCho chạy (SCON)Dễ sử dụngTruyền dữ liệu: 	MOV SBUF, ANhận dữ liệu: 	MOV A, SBUF20Alternate Pin Functions for Port Pins Timer/counter 2 capture/load91HT2EXP1.1Timer/counter 2 external input90HT2P1.0External data memory read strobeB7H/RDP3.7External data memory write strobeB6H/WRP3.6Timer/counter 1 external inputB5HT1P3.5Timer/counter 0 external inputB4HT0P3.4External interrupt 1B3H/INT1P3.3External interrupt 0B2H/INT0P3.2Transmit data for serial portB1HTxDP3.1Receive data for serial portB0HRxDP3.0ALTERNATE FUNCTIONBIT ADDRESSNAMEBIT21RegisterBit AddressP0808182838485868780SPNot bit addressable 81DPLNot bit addressable82DPHNot bit addressable83PCON87TCON88898A8B8C8D8E8F88TMODNot bit addressable89TL0Not bit addressable8ATL1Not bit addressable8BTH0Not bit addressable8CTH1Not bit addressable8DP1909192939495969790SCON98999A9B9C9D9E9F98SBUFNot bit addressable99Byte Address22TH2Not bit addressableCDTL2Not bit addressableCCRCAP2HNot bit addressableCBRCAP2LNot bit addressableCAT2CONC8C9CACBCCCDCECFC8A8A9AAABAC--B0B1B2B3B4B5B6D0-D2D3D4D5D6E0E1E2E3E4E5E6F0F1F2F3F4F5F6RegisterBit AddressP2A0A1A2A3A4A5A6A7A0IEAFA8P3B7B0IPB8B9BABBBC---B8PSWD7D0A or ACCE7E0BF7F0Byte addr23Thanh ghi điều khiển cổng nối tiếp SCON24Các chế độ hoạt động của cổng nối tiếpTrước khi sử dụng cổng nối tiếp, SCON được khởi tạo trị với chế độ đúng, và v.v... Thí dụ, các lệnh sau	MOV	SCON, #01010010Bkhởi tạo trị cho cổng nối tiếp ở chế độ 1 (SM0/SM1=0/1), cho phép bộ thu (REN=1) và đặt cờ ngắt phát (T1=1) để chỉ bộ phát sẵn sàng hoạt động.25Chế độ 0:Thanh ghi dịch 8 bit (1/2) 26Chế độ 0:Thanh ghi dịch 8 bit (2/2) 27Chế độ 1: UART 8 bit có tốc độ baud thay đổi được (1/3)Ở chế độ 1, 10 bit được phát đi trên TXD hoặc được thu vào ở RXD. Các bit này bao gồm 1 bit bắt đầu (luôn luôn là 0), 8 bit dữ liệu (LSB đi trước), và 1 bit dừng (luôn luôn là 1). Để hoạt động bộ thu, bit dừng đi vào RB8 trong SCON. Trong 8051, tốc độ baud được đặt bằng tốc độ tràn của Timer 1.28Chế độ 1: UART 8 bit có tốc độ baud thay đổi được (2/3)Việc phát được khởi động bằng cách ghi vào SBUF, nhưng không thật sự bắt đầu cho đến khi cạnh xuống kế của bộ đếm chia 16 cung cấp tốc độ bau cổng nối tiếp. Dữ liệu được dịch ra trên đường TXD bắt đầu bằng bit bắt đầu (start bit), theo sau là 8 bit dữ liệu, và kế đến là bit dừng. Chu kỳ của mỗi bit là nghịch đảo của tốc độ baud được lập trình trong timer. Cờ ngắt để phát (TI) được đặt lên 1 ngay khi bit dừng xuất hiện trên TXD . sự kiện đồng bộ hóa29Chế độ 1: UART 8 bit có tốc độ baud thay đổi được (3/3)Việc thu được khởi động bởi chuyển tiếp 1 sang 0 ở RXD. Bộ đếm chia 16 được reset tức thời để đồng chỉnh các số đếm với chuỗi bit đến. Chuỗi bit đến được lấy mẫu ở giữa 16 lần đếm.Giả sử bộ thu phát hiện bit bắt đầu hợp lệ thì tiếp tục nhận ký tự. Bit bắt đầu được bỏ qua và 8 bit dữ liệu được nhịp vào thanh ghi dịch cổng nối tiếp. Khi tất cả 8 bit đã được nhịp vào thì xảy ra:Bit thứ 9 (bit dừng) được nhịp vào RB8 trong SCON.SBUF được nạp với 8 bit dữ liệu, vàCờ ngắt của bộ thu (RI) được đặt lên 1.Tuy nhiên các điều trên chỉ xảy ra nếu có các điều kiện sau:RI = 0, vàSM2 = 1, và bit dừng nhận được = 1, hoặc SM2=0.Yêu cầu RI = 0 để bảo đảm rằng phần mềm đã đọc ký tự trước (và đã xóa RI).kiện thứ 2 thì hơi phức tạp, nhưng chỉ áp dụng trong chế độ truyền thông đa xử lý. Nó hàm ý “Không được đặt RI lên 1 trong chế độ truyền thông đa xử lý khi bit dữ liệu thứ chín là 0”.30Chế độ 2: UART 9 bit có tốc độ baud cố định Khi SM0 =1 và SM1 = 0, cổng nối tiếp hoạt động ở chế độ 2 như UART 9 bit với tốc độ baud cố định. Mười một bit được phát hoặc thu: 1 bit bắt đầu, 8 bit dữ liệu, 1 bit dữ liệu thứ 9 lập trình được, và 1 bit dừng. Khi phát, bit thứ 9 là nội dung của bit TB8 trong SCON. Khi thu, bit thứ 9 thu được được đặt trong RB8. Tốc độ baud ở chế độ 2 là 1/32 hay 1/64 tần số mạch dao động trên chip (xem thêm mục tốc độ baud cổng nối tiếp).31Chế độ 3: UART 9 bit có tốc độ baud thay đổi được	Chế độ 3 giống với chế độ 2 ngoại trừ tốc độ baud được lập trình và được cung cấp bởi timer. Thật ra các chế độ 1, 2, và 3 rất giống nhau. Sự khác biệt là tốc độ baud (cố định trong chế độ 2, thay đổi được trong chế độ 1 và 3) và số bit dữ liệu (8 trong chế độ 1, 9 trong chế độ 2 và 3)32Khởi tạo trị và truy cập các thanh ghi cổng nối tiếpCác tác vụ với cổng nối tiếpCho phép bộ thuTruyền (thu/phát) dữ liệu nối tiếpThêm bit kiểm tra chẳn lẽCác cờ ngắtĐặt tốc độ baud cho cổng nối tiếpTruyền thông đa xử lý33Sử dụng các bit trong thanh ghi SCONCho phép bộ thu (REN – bit 4)	SETB	RENHoặc	MOV	SCON, #xxx1xxxxB ; với x=0/1	 Rx Interrupt (RI, Rx buffer Full, bit 0)	Tx Interrupt (RI, Tx buffer Empty, bit 1)	1. Thu nối tiếp:	WAIT:	JNB	RI, WAIT 	CLR	RI	MOV	A, SBUF 2. Phát nối tiếp:	WAIT:	JNB	TI, WAIT	CLR	TI	MOV	SBUF,ACho phép bộ thu – Truyền dữ liệu nối tiếp 34bit kiểm tra chẳn lẽ - TB8 kiểm tra chẳn/lẽ (nếu không có dòng (*) là chẳn); qua bit nhớ C	MOV	C, P	CLP	C	; kiểm tra lẽ (*)	MOV	TB8, C	MOV	SBUF, A; ở chế độ 1: 7-bit + 1 parity-bit	CLR	ACC.7	MOV	C, P	MOV	ACC.7, C	MOV	SBUF, ANếu Parity luôn luôn bằng 1  có 2 bit dừng Thêm bit kiểm tra chẳn lẽ35Đặt tốc độ baud cho cổng nối tiếpCách đặt SMOD lên 1 MOV	A,PCON SETB	ACC.7 MOV	PCON,A36Sử dụng Timer 1 làm xung nhịp tốc độ baud	Khởi tạo trị TMOD ở chế độ timer 8 bit tự động nạp lại trị đầu (chế độ 2 của timer) và đặt giá trị nạp lại vào TH1 để cho tốc độ tràn bằng tốc độ baud. TMOD được khởi tạo trị như sau:	MOV	TMOD, #0010xxxxB	với “x” có giá trị 0 hay 1 cần cho Timer 0.	Đặt tốc độ baud rất thấp bằng cách dùng Timer 1 chế độ 16 bit , với TMOD = #0001xxxxB. Tuy nhiên phải khởi tạo trị lại các thanh ghi TL1/TH1 sau mỗi lần tràn. Việc này sẽ được thực hiện trong chương trình phục vụ ngắt. Một lưa chọn khác là cung cấp xung nhịp Timer1 bằng xung nhịp bên ngoài qua chân T1 (P3.5). Tốc độ baud là 1/32 tốc độ tràn của Timer 1.	Do đó công thức để xác định tốc độ baud trong các chế độ 1 và 3 là	Tốc độ baud = 1/32 Tốc độ tràn của Timer 1 	Thí dụ, hoạt động 1200 baud cần tốc độ tràn như sau	1200 = 1/32 Tốc độ tràn của Timer 1	Tốc độ tràn của Timer 1 = 32 x 1200 = 38400 = 38.4 KHz Với XTAL=12 MHz thì trị nạp cho T1 là 1000KHz/38.8KHz=26.04 ~ 263738Power Control Register PCONSM0D Double Baude Rate BitGF1 General-purpose Flag1GF0 General-purpose Flag0PD Power Down bitIDL Idle mode Bit39Baud Rate GeneratorSerial Port in Mode 0Serial Port in Mode 1 and 3Serial Port in Mode 240Thí dụ: Khởi tạo trị cho cổng nối tiếp	Viết chuỗi lệnh để khởi tạo trị cổng nối itếp hoạt động như UART 8 bit với tốc độ 2400 baud. Sử dụng Timer 1 để cung cấp xung nhịp tốc độ baud.	Bài giải.	Với thí dụ này, có 4 thanh ghi phải được khởi tạo trị là: SMOD, TMOD, TCON, và TH1. Giá trị cần để khởi tạo trị cho các thanh ghi như sau41Thí dụ: Chương trình xuất ký tự	Viết chương trình con OUTCHR để phát mã ASCII 7 bit trong thanh ghi tích lũy A ra cổng nốitiếp của 8051 với bit kiểm tra lẽ được thêm vào như bit thứ 8. Trở về từ chương trình con không làm thay đổi trị của thanh ghi tích lũy trước khi gọi chương trình con.Bài giải.	Thí dụ này và thí dụ kế minh họa 2 trong số các chương trình con thông dụng nhất trên các hệ vi tính có gắn thiết bị đầu cuối RS232: xuất ký tự (OUTCHR) và nhập ký tự (INCHAR).	ORG	8100H	OUTCHR:	MOV	C, P	; đặt bit kiểm ra chẳn vào cờ C	CPL	C	; đổi sang kiểm tra lẽ	MOV	ACC.7, C	; thêm vào mã ký tự	AGAIN:	JNB	TI, AGAIN	; TX có rảnh ? Không : kiểm tra lại	CLR	TI	; Truyền được  xóa cờ TI và	MOV	SBUF, A	; gửi ký tự	CLR	ACC.7	; bỏ bit kiểm tra lẽ và	RET	; quay về	END42	Thí dụ, các lệnh sau phát mã ASCII cho chữ Z đến thiết bị nối tiếp gắn vào cổng nối tiếp của 8051:	MOV	A, # ’Z’	CALL	OUTCHR	(tiếp tục)43Thí dụ: Chương trình con nhập ký tự	Viết chương trình con INCHAR để nhập 1 ký tự từ cổng nối tiếp của 8051 và quay về với mã ASCII 7 bit trong thanh ghi tích lũy. Ngoại trừ bit kiểm tra lẽ trong bit thứ 8 nhận được và đặt cờ nhớ lên 1 nếu có sai về kiểm tra chẳn lẽ.	ORG	8100H	INCHAR:	JNB	RI, $	; đợi ký tự	CLR	RI	; xóa cờ	MOV	A, SBUF	; đọc ký tự vào A	MOV	C, P	; với kiểm tra lẽ trong A, P sẽ = 1	CPL	C	; bù để chỉ có lỗi	CLR	ACC.7	; bỏ bit kiểm tra chẳn lẽ	RET	END44

File đính kèm:

  • pptbai_giang_vi_xu_ly_chuong_3_vi_dieu_khien_ho_vi_dieu_khien_8.ppt