L P TRÌNH H TH NG NHÚNGBÙI QU C B OVi ñi u khi n 8051BM K Thu t .i n T - .H Bách Khoa TP.HCM21.Vi ñi u khi n 8051BM K Thu t .i n T - .H Bách Khoa TP.HCM3Ph n m mKEIL PROTEUSBM K Thu t .i n T - .H Bách Khoa TP.HCM42.C u trúc b nh pdf
Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
1,04 MB
Nội dung
L P TRÌNH H TH NG NHÚNG BÙI QU C B O Vi ñi u n 8051 BM K Thu t ði n T - ðH Bách Khoa TP.HCM Vi ñi u n 8051 BM K Thu t ði n T - ðH Bách Khoa TP.HCM Ph n m m KEIL PROTEUS BM K Thu t ði n T - ðH Bách Khoa TP.HCM C u trúc b nh c a 8051 BM K Thu t ði n T - ðH Bách Khoa TP.HCM BM K Thu t ði n T - ðH Bách Khoa TP.HCM C u trúc b nh c a 8051 8051 có vùng nh riêng bi t (b nh chương trình, b nh d li u trong, b nh d li u ngoài) M i vùng nh ñư c truy c p b ng câu l nh khác Khi khai báo bi n, ta ph i xác ñ nh vùng nh cho bi n BM K Thu t ði n T - ðH Bách Khoa TP.HCM C u trúc b nh c a ARM7 LPC2000 Các vi x lý có ki n trúc VonNewman (VD: ARM) dùng chung khơng gian nh cho b nh chương trình d li u BM K Thu t ði n T - ðH Bách Khoa TP.HCM Không gian b nh chương trình ðư c g i code space Ch a chương trình h ng s VD: khai báo h ng s ch a bình phương s t ñ n 3: code char square[4] = {0,1,4,9}; L nh assembly: MOVC A, @A+DPTR BM K Thu t ði n T - ðH Bách Khoa TP.HCM Không gian b nh d li u n i Vùng nh n i truy xu t tr c ti p (00H-7FH) ñư c ký hi u data L nh assembly: MOV A, 7FH Vùng nh n i truy xu t gián ti p (00H-FFH), ñư c ký hi u idata L nh assembly: MOV MOV R0, #80H A, @R0 Hai vùng nh dùng ñ ch a bi n thư ng dùng bi n t m VD: khai báo m t bi n integer: idata unsigned int temp; BM K Thu t ði n T - ðH Bách Khoa TP.HCM 10 Không gian b nh d li u ðư c g i external data space (xdata) L nh assembly: MOV DPTR, #2000H MOVX A,@DPTR Ch a bi n dùng, kh i d li u l n ho c ngo i vi theo ki u memory-mapped VD: xdata unsigned int[1000] ADC_value; BM K Thu t ði n T - ðH Bách Khoa TP.HCM 11 VD: Vi t hàm có prototype sau: unsigned int checksum (unsigned int start, unsigned int end) đ tính checksum c a vùng nh chng trình t đ a ch start ñ n end (code) BM K Thu t ði n T - ðH Bách Khoa TP.HCM 12 unsigned int checksum (unsigned int start, unsigned int end) { unsigned int code *codeptr, *codeend; unsigned int data checksum = 0; codeptr = (unsigned int code *)start; codeend = (unsigned int code *)end; while (codeptr