xin chào mọi người lại là em đây ,em tên là hiếu vốn sinh ra trong 1 gia đình có truyền thống hiếu học nên ba mẹ em đặt tên em là hiếu,khoảng 2 tháng gần đây em có tự học lập trình 89S52 bằng ASM ,1 tháng học lý thuyết và 1 tháng thực hành,đã làm được với LCD,led 7 seg,UART,.....,tuy đã làm được hết các ngoại vi của core 8051 này nhưng vẫn còn những cái chưa hiểu mong được mọi người chỉ bảo giúp,đây là những cái khó hiểu đối với những người tự học như em :
1,stack: cái này thì hiểu nó là ngăn xếp giống như ngăn tủ hoạt động theo cơ chế LIFO ,để cất địa chỉ trở về khi thực hiện chương trình con,biết là thế rồi nhưng mà nó vẫn mơ hồ lắm,như ở PIC thì ngăn xếp do CPU tự quản ,còn với 89 này thì ra sao trong các tài liệu không giải thích,và em thấy mọi người viết lệnh mà cứ PUSH POP loạn cả lên đoạn này không hiểu được cái này có cần thiết lắm không hay để CPU tự làm
2,con trỏ DPTR :cái này thì dùng suốt rồi,viết suốt rồi quét led,làm lcd...,dùng là vậy nhưng cũng chưa hiểu bản chất của nó lắm,chỉ biết nó dùng truy suất bảng thôi
3,bank(băng): core 8051 có 4 băng nhớ mặc định là bank 0 rồi,em nghĩ bank 1 nó ghi dùng để chứa stack ,vậy bank 2 và bank 3 chỉ để không thôi sao vì khi viết chương trình em dùng băng 0 đã thoải mái lắm rùi ,còn bank 1 em nghĩ là không được dùng vì nhỡ ghi lên stack thì sao nhỉ ,hơn nữa nó chỉ chuyển sang bank 1 để lưu vào stack nếu có chương trình con sau đó lại nhảy về bank 0 đúng không nhỉ ??? ở PIC chuyển băng để set các thanh ghi khác nhau mà 8051 cả 4 bank đều giống nhau (R0-R7) thì bank 2,3 ...??????
4,các ô nhớ :core 8051 nói chung có vùng ram có định địa chỉ bit gồm 16 byte từ 20h-2Fh,vậy ta có thể sử dụng 16 byte này để cất dữ liệu không ? ví dụ em cất giá trị #255 vào địa chỉ 20 chẳng hạn??
-còn lại từ địa chỉ 30-7F là vùng ram đa dụng thì sử dụng thế nào ?
-khi ta sử dụng ram của CPU rồi thì khi chạy nó thiếu ô nhớ thì sao ?
5,cờ nhớ C :cái này em cũng dùng rùi nhưng cũng chả hiểu luôn !!
6, địa chỉ tức thời : trong khi viết chuơng trình hầu như thấy chỉ sử dụng địa chỉ tức thời ví dụ như: #200 ,còn định địa chỉ trực tiếp hay gián tiếp rất ít khi dùng đoạn này em cũng chưa hiểu
mong mọi người trợ giúp tha thiết cầu xin !!!
1,stack: cái này thì hiểu nó là ngăn xếp giống như ngăn tủ hoạt động theo cơ chế LIFO ,để cất địa chỉ trở về khi thực hiện chương trình con,biết là thế rồi nhưng mà nó vẫn mơ hồ lắm,như ở PIC thì ngăn xếp do CPU tự quản ,còn với 89 này thì ra sao trong các tài liệu không giải thích,và em thấy mọi người viết lệnh mà cứ PUSH POP loạn cả lên đoạn này không hiểu được cái này có cần thiết lắm không hay để CPU tự làm
2,con trỏ DPTR :cái này thì dùng suốt rồi,viết suốt rồi quét led,làm lcd...,dùng là vậy nhưng cũng chưa hiểu bản chất của nó lắm,chỉ biết nó dùng truy suất bảng thôi
3,bank(băng): core 8051 có 4 băng nhớ mặc định là bank 0 rồi,em nghĩ bank 1 nó ghi dùng để chứa stack ,vậy bank 2 và bank 3 chỉ để không thôi sao vì khi viết chương trình em dùng băng 0 đã thoải mái lắm rùi ,còn bank 1 em nghĩ là không được dùng vì nhỡ ghi lên stack thì sao nhỉ ,hơn nữa nó chỉ chuyển sang bank 1 để lưu vào stack nếu có chương trình con sau đó lại nhảy về bank 0 đúng không nhỉ ??? ở PIC chuyển băng để set các thanh ghi khác nhau mà 8051 cả 4 bank đều giống nhau (R0-R7) thì bank 2,3 ...??????
4,các ô nhớ :core 8051 nói chung có vùng ram có định địa chỉ bit gồm 16 byte từ 20h-2Fh,vậy ta có thể sử dụng 16 byte này để cất dữ liệu không ? ví dụ em cất giá trị #255 vào địa chỉ 20 chẳng hạn??
-còn lại từ địa chỉ 30-7F là vùng ram đa dụng thì sử dụng thế nào ?
-khi ta sử dụng ram của CPU rồi thì khi chạy nó thiếu ô nhớ thì sao ?
5,cờ nhớ C :cái này em cũng dùng rùi nhưng cũng chả hiểu luôn !!
6, địa chỉ tức thời : trong khi viết chuơng trình hầu như thấy chỉ sử dụng địa chỉ tức thời ví dụ như: #200 ,còn định địa chỉ trực tiếp hay gián tiếp rất ít khi dùng đoạn này em cũng chưa hiểu
mong mọi người trợ giúp tha thiết cầu xin !!!
Comment