Yêu cầu : +Về phần cứng : Dùng mạch vi xử lý 8085 hoặc 8051. Bộ nhớ chương trình ROM : 4KB có địa chỉ từ 0000H,RAM 8 KB có địa chỉ tuỳ chọn. Hai cổng vào tương tự,mỗi cổng 8 kênh nhận tín hiệu đo nhiệt độ từ 0V10V tương ứng với nhiệt độ 0100oC,các cổng vào ra số và các mạch điều khiển. + Phần mềm : Tín hiệu cho phép chạy và dừng chương trình.Tín hiệu dừng khẩn cấp. Đọc tín hiệu đo nhiệt độ từ hai cổng vào tương tự (mỗi cổng 8 kênh) và lưu trữ vào hai vùng nhớ tương ứng của RAM. Sau mỗi lần đọc,tính giá trị trung bình cộng của nhiệt độ và gửi ra cổng hiển thị bằng LED. So sánh nhiệt độ của từng kênh với giá nhiệt độ trung bình.Nếu kết quả lớn hơn hoặc nhỏ hơn giá trị cho phép trước thì gửi tín hiệu báo động cao hoặc thấp tương ứngvới kênh đó.Giá trị cho phép này đặt trong một ô nhớ của RAM. Chương trình dừng lại và báo động bằng còi khi xảy ra một trong các trường hợp sau: .Có ít nhất bốn kênh đo vượt quá hoặc nhỏ hơn giới hạn cho phép so với giá trị trung bình. .Giá trị nhiệt độ trung bình lớn hơn hoặc nhỏ hơn giá trị giới hạn MAX và MIN tương ứng . Các giá trị giới hạn MAX và MIN được đặt trong hai ô nhớ của RAM.
BÀI TẬP THIẾT KẾ HỆ VI XỬ LÝ BIT Yêu cầu : +Về phần cứng : - Dùng mạch vi xử lý 8085 8051 - Bộ nhớ chương trình ROM : 4KB có địa từ 0000H,RAM KB có địa tuỳ chọn - Hai cổng vào tương tự,mỗi cổng kênh nhận tín hiệu đo nhiệt độ từ 0V10V tương ứng với nhiệt độ 0100oC,các cổng vào số mạch điều khiển + Phần mềm : - Tín hiệu cho phép chạy dừng chương trình.Tín hiệu dừng khẩn cấp - Đọc tín hiệu đo nhiệt độ từ hai cổng vào tương tự (mỗi cổng kênh) lưu trữ vào hai vùng nhớ tương ứng RAM - Sau lần đọc,tính giá trị trung bình cộng nhiệt độ gửi cổng hiển thị LED - So sánh nhiệt độ kênh với giá nhiệt độ trung bình.Nếu kết lớn nhỏ giá trị cho phép trước gửi tín hiệu báo động cao thấp tương ứngvới kênh đó.Giá trị cho phép đặt nhớ RAM - Chương trình dừng lại báo động còi xảy trường hợp sau: Có bốn kênh đo vượt nhỏ giới hạn cho phép so với giá trị trung bình .Giá trị nhiệt độ trung bình lớn nhỏ giá trị giới hạn MAX MIN tương ứng Các giá trị giới hạn MAX MIN đặt hai ô nhớ RAM I II PHẦN I : THIẾT KẾ PHẦN CỨNG I Giới thiệu hệ vi điều khiển 8051 Bộ vi điều khiển viết tắt Micro controller, mạch tích hợp chip lập trình được, dùng để điều khiển hoạt động hệ thống Theo chương trình người lập trình Trong thiết bị điện điện tử dân dụng vi điều khiển điều khiển máy giặt, điều khiển máy lạnh, thang máy, … Còn hệ thống sản xuất tự động, vi điều khiển sử dụng robot, dây chuyền tự động,… Các hệ thống thông minh vai trị vi điều khiển quan trọng Phần vi mạch đơn vị xử lý trung tâm CPU gồm có : Thanh ghi tích luỹ (A) Thanh ghi tích luỹ phụ (B) dùng cho phép nhân chia Đơn vị lôgic số học ALU Từ trạng thái chương trình PSW bank ghi Con trỏ ngăn xếp SP trỏ liệu DTPR định địa cho nhớ liệu bên ngồi Ngồi cịn có đếm chương trình PC , giải mã lệnh , điều khiển thời gian logic Đơn vị xử lý trung tâm nhận trực tiếp xung nhịp từ tạo dao động lắp thêm vào Chương trình chạy cho dừng nhờ khối logic ngắt bên Các nguồn ngắt biến cố bên ,sự tràn đếm định thời giao diện nối tiếp Bộ vi xử lý có chương trình bên dung lượng 8Kbyte , 128 byte RAM để xếp liệu thơng tin điều khiển Ngồi cịn có định thời 16 bit Timer 0, Timer1, chúng sử dụng đếm kiện Có cổng P0 P3 bit độc lập với sử dụng cho mục đích điều khiển đa dạng Khi làm việc với nhớ bên cổng P0 dùng để truyền nửa địa nhớ sử dụng giống I II dùng cho liệu bit Sau qua cổng P2 diễn trình xuất nửa địa bit Cổng P1 P3 có chứa cổng cổng vào/ bit sử dụng cho mục đích điều khiển khác , cổng P3 cịn có thêm đường dẫn điều khiển dùng để trao đổi với nhớ bên , để đấu nối giao diện nối tiếp đường dẫn ngắt bên Giao diện nối tiếp có chứa truyền nhận khơng đồng làm việc độc lập với nhau.Bằng cách đấu nối với đệm thích hợp , ta hình thành cổng nối tiếp RS232 đơn giản Tốc độ truyền qua cổng nối tiếp đặt vùng rộng ấn định định thời Sơ đồ khối chip 8051 Tổ chức nhớ 8051 8051 có khoảng địa độc lập cho nhớ chương trình nhớ liệu Sự độc lập nhớ chương trình nhớ liệu cho phép nhớ liệu xử lí địa bit Nó lưu trữ thao tác nhanh CPU bit Tuy nhiên địa 16 bit phát thông qua ghi DPTR I II Bộ nhớ chương trình (ROM,EPROM) nhớ có đọc Bộ nhớ lên tới 64Kbyte Trong 8051 4Kbyte thấp nhớ chương trình chip Bộ nhớ ngồi đọc nhờ tín hiệu chốt chân PSEN Bộ nhớ liệu độc lập với nhớ chương trình, 128 byte thấp nhớ liệu chip truy nhập đến 64Kbyte ngồi CPU phát tín hiệu RD WR cần thiết suốt q trình xử lí nhớ liệu a/ Bộ nhớ chương trình : Sau reset CPU bắt đầu thực từ địa 0000H Bảng vector ngắt địa 0003H đến 002BH Mỗi ngắt xác định vị trí cố định nhớ chương trình Khi ngắt xảy PCU nhảy tới vị trí nơi mà u cầu phục vụ Mỗi vector ngắt có độ dài Byte Nếu chương trình đủ ngắn ta chứa Byte , chương trình đủ dài chứa lệnh nhảy tới chương trình phục vụ ,4 Kbyte (hoặc Kbyte , 16Kbyte) phần thấp nhớ chương trình ROM ROM Điều thực nối chân EA lên mức mức (nếu ROM ngồi , ROM trong) Khi truy nhập nhớ sử dụng cổng P0 P2 làm 16 đường vào Trong P0 làm chức Bus địa Bus liệu Nó phát Byte thấp nhớ chương trình giồng địa phần thấp , P2 phát địa phần cao.Địa nhớ chương trình ln có độ rộng 16 bit b/ Bộ nhớ liệu : Bộ nhớ liệu chia thành vùng : - Vùng :Địa từ 00H đến 1FH phần thấp chia thành khối ghi Các lệnh chương trình gọi ghi từ R0 đến R7 Hai bit ghi trạng thái (RS0,RS1 ) lựa chọn khối - Vùng 2: Địa từ 20H đến 2FH bao gồm 16 byte vùng ô nhớ địa theo bit - Vùng 3: Địa từ 30H đến 7FH làm chức thông thường nhớ RAM I II - Vùng ghi chức đặc biệt (SFR).Có 21 ghi chức đặc biệt chiếm phần RAM nội từ địa 80H đến FFH c/ Cổng vào song song: 8051 có cổng vào song song , cổng định chiều ứng với điều khiển đầu đệm đầu vào Điều khiển đầu cổng P0 , cổng P2 đệm đầu vào cổng P0 sử dụng cho việc xử lí nhớ Trong ứng dụng đầu cổng P0 byte thấp địa nhớ Đầu cổng P2 địa byte cao Tất chân cổng chân cổng đa chức Điều thể bảng sau: Cổng vào Chức P1.0 T2 (Đầu vào bên Timer / Counter2) P1.1 T2EX (Trigger lặp lại Timer/ Counter2) P3.0 RXD (Cổng đầu vào nối tiếp) P3.1 TXD (Cổng đầu nối tiếp ) INT (Ngắt ngoài) P3.2 INT (Ngắt ngoài) P3.3 P3.4 T0 (Đầu vào bên Timer/Counter 0) P3.5 T1 (Đầu vào bên Timer/Counter1) WR (Xung chốt để viết nhớ liệu P3.6 ) P3.7 RD (Xung chốt để đọc nhớ liệu ngồi) Cổng 1,2,3 có điện trở kéo lên (pull up ) bên Cổng có đầu cực máng để hở Mỗi đường I/O sử dụng độc lập giống đầu vào đầu Khi sử dụng đầu vào chốt bit cổng phải đặt mức logic 1, điều đóng FET điều khiển đầu Đối với cổng 1,2,3 mức logic chân kéo I II lên mức logic cao điện trở pull up , kéo xuống mức logic thấp nguồn Cổng khơng có điện trở pull up phía Điện trở FET pull up điều khiển đầu P0 sử dụng cổng phát mức logic cao suốt q trình xử lí nhớ ngồi Trong trường hợp khác FET pull up khoá Tất chốt cổng viết mức logic chức reset Khi mức logic viết vào chốt cổng muốn làm đầu vào mức logic phải viết vào d/ Timer/ Counter 8051 có ghi Timer/ Counter 16 bit : Timer Timer1 ghi hoạt động chế độ Timer Couter Trong chế độ Timer nội dung ghi tăng sau chu kỳ máy tần số đồng hồ 1/12 tần số máy phát thạch anh Trong chế độ Counter nội dung ghi tăng có chuyển từ sang chân tín hiệu T0 T1 Trong chế độ đầu vào lấy mẫu S5P2 chu kỳ máy tần số đếm lớn 1/24 tần số máy phát thạch anh Chức Timer , Counter chọn bit điều khiển C/T ghi chức đặc biệt TMOD Timer Timer có chế độ hoạt động lựa chọn cặp bit (M0,M1) TCON ghi điều khiển Timer/Counter TF TR TF TR IE IT IE IT 1 0 1 0 - TF1 : Cờ báo Timer tràn Được thiết lập phần cứng Timer/ Counter tràn Được xoá phần cứng vector xử lí việc thực lệnh ngắt - TR1: Bit điều khiển làm việc Timer1 Được thiết lập xoá phần mềm phép Timer/ Counter chế độ ON/OFF I II - TF0 : Cờ báo Timer tràn Được thiết lập phần cứng Timer/ Counter tràn Được xoá phần cứng vector xử lí việc thực ngắt - TR0: Bit điều khiển làm việc Timer Được thiết lập xoá phần mềm phép Timer / Counter chế độ ON/OFF - IE1: Cờ cho phép INT1 hoạt động Được thiết lập phần cứng Được xoá phần cứng khi ngắt thực - IT1: Bit điều khiển ngắt chân INT1 Được thiết lập xoá phần mềm để xác định ngắt hoạt động theo sườn xuống theo mức - IE0: Cờ cho phép chân INT hoạt động Được thiết lập phần cứng phát xung chân INT Được xoá phần cứng ngắt thực - IT0:Bit điều khiển ngắt chân INT Được thiết lập xoá phần mềm để xác định ngắt hoạt động theo sườn xuống theo mức Thanh ghi điều khiển chế độ Timer/ Counter : TMOD GAT C/T E # M1 M0 GAT C/T E # Timer1 M1 M0 Timer0 - GATE : Khi TRx thiết lập GATE =1 TIMER/COUNTERx sec chạy chân INTx mức cao Khi GATE = TIMER/COUNTERx chạy TRx = - C/ T : Bit lựa chọn Timer Counter - M1: Bit lựa chọn chế độ - M2: Bit lựa chọn chế độ M1 M0 Chế độ hoạt động 0 Timer bit 1 Timer/Counter 16 bit I II 1 1 Timer/ Counter tự động nạp bit (Timer ) TL0 Timer / Counter bit điều khiển bit điều khiển Timer 0, TH0 Timer bit điều khiển bit điều khiển Timer 3(Timer 1) Timer/ Counter dừng +Mode 0: Cả Timer mode đếm bit với đầu vào chia cho 32 Đây Timer 13 bit +Mode 1: Giống mode ngoại trừ ghi Timer hoạt động với địa 16 bit +Mode 2: Định dạng ghi Timer đếm bit (TL1) với chức tự động nạp lại giá trị Khi TL1 đếm tràn đặt cờ TF1 nạp lại nội dung TH1 đặt trước phần mềm +Mode 3: Timer đếm , hoạt động TR1 đặt Timer thiết lập TL0 TH0 đếm độc lập e/ Ngắt 8051 cung cấp nguồn ngắt : ngắt , ngắt Timer ngắt cổng nối tiếp Khi ta thiết lập trạng thái ban đầu cho hệ thống tất ngắt bị vơ hiệu hố sau chúng cho phép riêng rẽ phần mềm Ngắt INT , INT1 : Có thể hoạt động theo mức theo sườn phụ thuộc vào bit IT0 IT1 ghi TCON Ngắt Timer Timer phát TF0 TF1 , chúng thiết lập ghi Timer/ Counter (ngoại trử Timer chế độ ) Khi ngắt Timer hoạt động cờ phát xố phần cứng chip thứ tự phục vụ trỏ tới Ngắt cổng nối tiếp tạo ghép logic OR chân RI TI Nó xoá phần cứng thứ tự phục vụ trỏ tới Trong thực tế thứ tự phục vụ khơng phải xác định RI TI phát lệnh ngắt bit phải xố phần mềm Trình I II tự thực lệnh ngắt cúng thực theo bước sau: +Thiết lập EA =1 ghi IE +Thiết lập bit tương ứng ghi IE =1 +Bắt đầu thực tai địa vector ngắt tương ứng theo bảng sau: Nguồn ngắt Địa vector ngắt 0003H 000BH 0013H 001BH 0023H 002BH IE0 TF0 IE1 TF1 RI & TI TF2 & EXF2 Mỗi nguồn ngắt hoạt động không hoạt động cách riêng biệt thiết lập xố bít ghi chức đặc biệt IE EA E T2 ES ET EX ET EX 1 0 +EA:Nếu EA=0 ngắt không thực Nếu EA = nguồn ngắt hoạt động không hoạt động tuỳ thuộc vào việc thiết lập xố bit cho phép +ET2 : Dành cho người sử dụng +ES: Cho phép ngắt cổng nối tiếp hoạt động không hoạt động +ET1: Cho phép ngắt tràn Timer tích cực khơng tích cực +EX1: Cho phép chân INT1 tích cực khơng tích cực +ET0:Cho phép ngắt tràn Timer tích cực khơng tích cực +EX0: Cho phép chân INT tích cực khơng tích cực I II Mỗi nguồn ngắt lập trình cách độc lập mức ưu tiên tuỳ thuộc vào việc thiết lập xoá bít ghi chức đặc biệt IP(thanh ghi ưu tiên ngắt) - - PT P S PT P X PT PX 0 + : Dành cho người sử dụng +PT2: Định nghĩa mức ưu tiên ngắt cho Timer +PS : Định nghĩa mức ưu tiên ngắt cho cổng nối tiếp +PT1: Định nghĩa mức ưu tiên ngắt cho TImer1 +PX1:Định nghĩa mức ưu tiên ngắt cho chân +PT0 : Định nghĩa mức ưu tiên ngắt cho Timer +PX0 : Định nghĩa mức ưu tiên ngắt cho chân Nếu có yêu cầu mức ưu tiên khác nhận thời điểm yêu cầu có mức ưu tiên cao thực Nếu yêu cầu có mức ưu tiên thực theo trình tự sau: Thứ tự Nguồn IE0 TF0 IE1 TF1 RI+TI TF2+EXF2 Mức ưu tiên Cao Thấp f/ Thanh ghi từ trạng thái chương trình(PSW) : Thanh ghi trạng thái nằm vùng ghi chức đặc biệt Nó chứa bit cary, bit cary phụ , cờ , bit lựa chọn nhóm ghi cờ tràn , cờ chẵn lẻ C A F0 RS RS O - P Y C V I II 10 StarTt CHƯƠNG TRÌNH CON PHỤC VU NGẮT KHI CĨ TÍN HIỆU EOC CỦA ADC LÀ -ĐỌC KÊNH THỨ I TỪ ADC -ĐƯA GÍA TRỊ ĐỌC ĐƯỢC VÀO VÙNG NHỚ RAM TƯƠNG ỨNG II I End 24 C.CHƯƠNG TRÌNH TÍNH GIÁ TRỊ TRUNG BÌNH CỦA KÊNH ĐỌC ĐƯỢC TỪ ADC Start -ĐỌC KÊNH THỨ I(0I7) -CHIA CHO -PHẦN NGUYÊN =AI -PHẦN DƯ=BI N ĐỌC XONG? Y TBC=Ai+(Bi)/8 End I II 25 D,CHƯƠNG TRÌNH TÁCH SỐ TRUNG BÌNH CỘNG RA HÀNG TRĂM ,CHỤC ,ĐƠN VỊ Start -ĐỌC SỐ TBC -TBC/100 -A=PHẦN NGUYÊN -B=PHẦN DƯ -B/10 -C=PHẦN NGUYÊN -D=PHẦN DƯ -HÀNG TRĂM=A -HÀNG CHỤC=C -HÀNG ĐƠN VỊ=D End E,CHƯƠNG TRÌNH HIỂN THỊ RA LED Start -ĐỌC HÀNG TRĂM HIỂN THỊ KÊNH TRỄ MỘT THỜI GIAN -ĐỌC HÀNG CHỤC HIỂN THỊ KÊNH TRỄ MỘT THỜI GIAN -ĐỌC HÀNG ĐƠN VỊ HIỂN THỊ KÊNH TRỄ MỘT THỜI GIAN II I End 26 Start j=0 F,CHƯƠNG TRÌNH KIỂM TRA XEM ĐÃ THOẢ MÃN ĐẦU BÀI CHƯA? ĐỌC KÊNH I KQ=|GT KÊNH I-TBC| KQ