:sosad: sao mình ngồi đọc code cho nổi, nhưng dòm qua hình như code sau là bạn viết dạng function. Cái đó cũng bt thôi có gì đâu mà không chấp nhận, thậm chí là còn khuyến khích. Code thì mình không ý kiến vì ngồi đọc code ASM mệt lắm :sweat:. Nhưng ở chỗ này bạn hiểu lầm vi điều khiển 89C52 sử dụng tín hiệu tích mực ở mức thấp cái này là hoàn toàn sai. Nếu nói đến tích cực thì vi điều khiển chỉ có khái niệm là tích cực hoặc là không tích cực. Còn tích cực mức thấp, hay mức cao không nằm ở bản thân vi điều khiển mà nằm ở các ngoại vi bạn gắn vào. Ví dụ gắn với led theo sơ đồ vdk -> led -> vcc => tích cực mức thấp, và ngược lại vdk -> led -> gnd => tích cực mức cao. Các bài toán tạo sóng vuông này thường chạy trên Oscilator để coi dạng sóng tạo ra chứ nhìn vào led thì khó xác định lắm, trong proteus có mô phỏng Oscilator, bạn nhìn vào cột bên tay phải... có icon hình sóng, ở trong đó có nhiều loại để đo dao động. Mình ko cài proteus nên bạn tự mò thử coi