Nguyên văn bởi 1991conga
Xem bài viết
Thông báo
Collapse
No announcement yet.
Led matran bằng ASM có nhiều bạn quang tâm..................
Collapse
X
-
Đây là code mới kết hợp 3 kiểu chạy các bạn ngâm cứu tiếp nhé
Code:;QUETLED hien thi gom 80 cot va 8 hang SI BIT P3.0 ;pin 14 74HC595 SCK BIT P3.1 ;pin 11 74HC595 RCK BIT P3.2 ;pin 12 74HC595 ;******************************************* CHONHANG EQU P2 ;CHONHANG PORT P2 ;******************************************* CON_TRO EQU R0 DIA_CHI EQU R1 SO_COT EQU R2 TOC_DO EQU R3 DICHBIT EQU 08H ;hang 0>7 p2=00H>>07H ;**************************************** ;************BAT DAU CHUONG TRINH ******** ;****************************************** ORG 0000H LJMP MAIN ; ORG 0003H ;LJMP EX0ISR ; ORG 000BH ;Dia chi vector bo dinh thoi 0 ; LJMP T0ISR ; ORG 001BH ;Dia chi vector bo dinh thoi 1 ; LJMP T1ISR ;tao am thanh bipbip ; ORG 002BH ;Dia chi vector bo dinh thoi 2 ;*************************************** ORG 0030H ;************************** MAIN : MOV SP,#60H MOV TMOD,#11H;11H ;Ca 2 bo dinh thoi che do 1 MOV IE,#8AH ;8A;cho phep ngat do cac bo dinh thoi MOV DPTR,#CONGMINH ;******************************************************* ;*************CH/TR Chinh ***************************** PLAY: ;*************************** MOV DIA_CHI,#-80 DICH_TRAI:MOV TOC_DO,#3 LRAM: LCALL LOADLENRAM LCALL QUET8HANG DJNZ TOC_DO,EX_01 MOV TOC_DO,#3 INC DIA_CHI CJNE R1,#80,EX_01 LJMP DICH_PHAI EX_01: LJMP LRAM ;*************************** DICH_PHAI: MOV DIA_CHI,#80 dich_phai1: MOV TOC_DO,#3 LRAM_P: LCALL LOADLENRAM LCALL QUET8HANG DJNZ TOC_DO,EX_02 MOV TOC_DO,#3 DEC DIA_CHI CJNE DIA_CHI,#-80,EX_02 LJMP DICH_LEN EX_02: LJMP LRAM_P ;************************** DICH_LEN:mov r6,#100 MOV DICHBIT,#7 MOV TOC_DO,#3 LRAM_L: LCALL DICH_RAM_LEN LCALL QUET8HANG MOV A,DICHBIT CJNE A,#0,EX_04;khi DICHBIT=0 thì dung lai djnz r6,EX_05 mov DIA_CHI,#-9 ljmp dich_trai ; ljmp dich_phai1 ; LJMP LRAM_L EX_04: DJNZ TOC_DO,EX_05 MOV TOC_DO,#3 DEC DICHBIT EX_05: LJMP LRAM_L LJMP PLAY ;************************************************ ;************************************************ ;**********CH/TR con ********************** DICH_RAM_LEN: PUSH 00H PUSH 01H PUSH 02H MOV CON_TRO,#80H MOV DIA_CHI,#-9;addr giua bang=(80-62)/2 MOV SO_COT,#80 ;80cot LAPL_02: MOV A,DIA_CHI MOVC A,@A+DPTR MOV R5,DICHBIT CJNE R5,#0,Q_T1 LJMP KHDICH Q_T1: RL A ;Chay chu duoi len Q_T: CLR C;,muon chay xuong thay bang RR A RRC A ;Chay chu duoi len , DJNZ R5,Q_T;muon chay xuong thay bang RRC A KHDICH: MOV @CON_TRO,A INC CON_TRO INC DIA_CHI MOV A,DIA_CHI DJNZ SO_COT,LAPL_02 POP 00H POP 01H POP 02H RET ;********************************************** LOADLENRAM: PUSH 00H PUSH 01H PUSH 02H MOV CON_TRO,#80H ;Dia chi dau MOV A,DIA_CHI MOV SO_COT,#80 ;80cot LAPL_01: MOV A,DIA_CHI MOVC A, @A+DPTR ;lay du lieu MOV @CON_TRO,A ;ghi vao ram INC CON_TRO ;tang con to dia chi INC DIA_CHI ;tang dia chi trung gian DJNZ SO_COT,LAPL_01;du so cot chua POP 00H POP 01H POP 02H RET ;*********************************************** QUET8HANG: PUSH 07H PUSH 00H MOV R7,#7 ;chon hang LAPHANG: MOV CON_TRO,#80H CLR RCK LAPCOT: CLR SCK MOV A,@CON_TRO CLR C RRC A MOV @CON_TRO,A SETB SCK MOV SI,C INC CON_TRO CJNE CON_TRO,#0D1H,LAPCOT SETB RCK MOV CHONHANG,R7;Sang hang LCALL DELAYLED MOV CHONHANG,#8 DEC R7 CJNE R7,#-1,LAPHANG POP 00H POP 07H RET ;******************************************* ;******************************* DELAYLED: MOV 09H,#8 D1: MOV 10H,#250 DJNZ 10H,$ DJNZ 09H,D1 RET ;***************************;*********** ;************* CONGMINH: DB 7CH,0FEH,82H,82H,0CEH,4CH,0H,5CH,0BEH,0A2H,0BEH,5CH,0H,3EH,3EH,20H,3EH,1EH,0H,19H,3DH,25H,3FH,3EH,0H,0H DB 0FEH,0FEH,60H,30H,60H,0FEH,0FEH,0H,0BCH,0BEH,4H,0H,3EH,3EH,20H,3EH,1EH,0H,0FEH,0FEH,20H,3EH,1EH,0H,0H DB 0FEH,0FEH,90H,90H,80H,64H,0F6H,92H,0DEH,4CH,0H ;************* END
Comment
-
Nguyên văn bởi CONGMINHfs Xem bài viếtBạn xem lại #1 cách mà mình thiết kế mạch là mạch thật luôn đó và khả năng mở rộng của nó,cái này bạn muốn 16 hang thì chỉ cần thêm 1em 74hc138 và tốn thêm 1 chân vdk nữa là ok rồi,tất nhiên phải sữa code lại là quét 8h thành 16hàng hay 24 hàng thì tùy bạn kể cả led 2 màu luôn..
Comment
-
Nguyên văn bởi CONGMINHfs Xem bài viếtTrong code có đó bạn vì ngẩu hứng nên mình chọn 80 byte ram từ 9EH đến EFH có phải là 80 byte không ,thực chất thì từ 9EH đến EEH nhưng vì lệnh so sánh nên phải là EFH
hỡi anh em còn ai thắc mắc gì nữa không ta....!!!!
Comment
-
Nguyên văn bởi CONGMINHfs Xem bài viếthỡi anh em còn ai thắc mắc gì nữa không ta....!!!!
Comment
-
Nguyên văn bởi hongphuong98 Xem bài viếtBạn ơi,mỗi khi muốn đổi nội dung phải lôi con atmel 8951 ra nạp lại code mất công quá,làm thế nào để nhập nội dung vào ô nhớ từ máy tính?cám ơn bạn nhé.
Comment
-
Nguyên văn bởi PDEL Xem bài viếtBác qua bền này nè hướng dẩn chi tiết lắm Hướng dẫn giao tiếp máy tính từ A đến Z(Hình ảnh)
Dùng max 232 giao tiếp 89xx với máy tính nạp mã ácii tôi không biết bạn ạ!
Comment
-
Nguyên văn bởi 1991conga Xem bài viếtý em là dùng kon 595 để đưa DL ra hàng và quét cột cơ chứ ko phải kon 138. kon 138 thì em làm đc rồi
cho hàng thì bây giờ xuất 2 byte
chúc thành công !...
Comment
-
Nguyên văn bởi Ck33spkt Xem bài viếtGiờ em mới nhớ ra cái để hỏi: Ở trên em thấy bác chạy chữ "Công Minh FS", chữ này tạo như thế nào vậy bác? Mình cũng phải kẻ các ô tròn kích thước 8x80 như cái matrix của mình rồi tô chữ vào đó, xong dựa vào đó để dò ra code hả bác?
Comment
-
bác Congminh cho em hỏi 2 vấn đề cái :
- bác đặt biến DIACHI=#-80 là nghĩa thế nào nhỉ ?
- để quét led lần lượt như vậy thì phải có một chương trình xử lý những đoạn mà có những cột không sáng ( kiểu như bác quét chữ CONGMINH thì đầu tiên là 32 cột tắt,sau đó là 31 cột tắt và 1 cột sáng, sau đó tiếp là 30 cột tắt và 2 cột sáng theo chữ mình quy định trong mã, cứ tiếp như vậy, đến 0 cột tắt và 32 cột sáng theo chữ trong bảng mã matrix, và sau đó là cứ dịch bình thường ). bác có thuật toán nào xử lý vấn đề đó không ? (em thì chỉ biết có hai cách là : 1, nạp thêm vào ROM những mã matrix; 2, viết một chương trình con để xử lý khoảng trắng đó- cái này hơi rắc rối), em xem trong code của bác không thấy (à em quên, bác code quét theo hàng, nhưng em muốn quét theo cột thì xử lý xao nhỉ ?)
cảm ơn bác.
Comment
-
Nguyên văn bởi huuthobka Xem bài viếtbác Congminh cho em hỏi 2 vấn đề cái :
- bác đặt biến DIACHI=#-80 là nghĩa thế nào nhỉ ?
- để quét led lần lượt như vậy thì phải có một chương trình xử lý những đoạn mà có những cột không sáng ( kiểu như bác quét chữ CONGMINH thì đầu tiên là 32 cột tắt,sau đó là 31 cột tắt và 1 cột sáng, sau đó tiếp là 30 cột tắt và 2 cột sáng theo chữ mình quy định trong mã, cứ tiếp như vậy, đến 0 cột tắt và 32 cột sáng theo chữ trong bảng mã matrix, và sau đó là cứ dịch bình thường ). bác có thuật toán nào xử lý vấn đề đó không ? (em thì chỉ biết có hai cách là : 1, nạp thêm vào ROM những mã matrix; 2, viết một chương trình con để xử lý khoảng trắng đó- cái này hơi rắc rối), em xem trong code của bác không thấy (à em quên, bác code quét theo hàng, nhưng em muốn quét theo cột thì xử lý xao nhỉ ?)
cảm ơn bác.
- bác đặt biến DIACHI=#-80 là nghĩa thế nào nhỉ ?
bản led của mình là 80 cột đúng không bạn,vậy từ trái qua phải cột đầu tiên mình chọn daichi là 0
thì tương ứng cột cuối bên trái là +80 và cột cuối bên phải là -80.
- để quét led lần lượt như vậy thì phải có một chương trình xử lý những đoạn mà có những cột không sáng ( kiểu như bác quét chữ CONGMINH thì đầu tiên là 32 cột tắt,sau đó là 31 cột tắt và 1 cột sáng, sau đó tiếp là 30 cột tắt và 2 cột sáng theo chữ mình quy định trong mã, cứ tiếp như vậy, đến 0 cột tắt và 32 cột sáng theo chữ trong bảng mã matrix, và sau đó là cứ dịch bình thường ). bác có thuật toán nào xử lý vấn đề đó không ? (em thì chỉ biết có hai cách là : 1, nạp thêm vào ROM những mã matrix; 2, viết một chương trình con để xử lý khoảng trắng đó
hoanh nghênh bạn đã hiểu được thấu đáo vấn đề cố giắng phát huy nhé
nếu bạn quét cột (với số cột không lớn) thì để đơn giản bạn nên tắt cột bằng mã trong bảng(mảng) luôn.
chúc thành công..!..
Comment
-
Nguyên văn bởi CONGMINHfs Xem bài viết- bác đặt biến DIACHI=#-80 là nghĩa thế nào nhỉ ?
bản led của mình là 80 cột đúng không bạn,vậy từ trái qua phải cột đầu tiên mình chọn daichi là 0
thì tương ứng cột cuối bên trái là +80 và cột cuối bên phải là -80.
giả xử DIA_CHI=-80 ; sau đó có lệnh mov a,dai_chi ; rồi có lệnh movc a,@a+dptr thì nó xẽ lấy mã hiển thị ở trước ô 9E (tức là 9EH-80=4EH );
Vậy tức là mình đã tốn mất 80byte RAM rồi phải không ? (tổng cộng mất 160byte RAM cho dữ liệu trắng ?).
Em hiểu có gì sai mong bác thông cảm,
hy vọng bác giúp đàn em thắc mắc này.
thank.
Comment
-
Nguyên văn bởi huuthobka Xem bài viếtVấn đề em băn khoăn chính là chỗ này,
giả xử DIA_CHI=-80 ; sau đó có lệnh mov a,dai_chi ; rồi có lệnh movc a,@a+dptr thì nó xẽ lấy mã hiển thị ở trước ô 9E (tức là 9EH-80=4EH );
Vậy tức là mình đã tốn mất 80byte RAM rồi phải không ? (tổng cộng mất 160byte RAM cho dữ liệu trắng ?)..
Đúng rồi đó bạn nhưng ta sử lí 160byte này như thế nào chứ đâu thể dùng phí thế
lúc nào có dịp nào đó cụ thể mình sẽ hướng dẫn bạn về cái khoản trắng này,chỉ có vài lệnh thôi.
gợi ý: dlieutrang......dulieu......dlieutrang .khi diachi nằm trong tầm dlieutrang thì dptr không lấy dulieu ở bảng mà lấy dulieu trắng cố định là 00h hoặc FFH....
Comment
Bài viết mới nhất
Collapse
-
bởi thanghiCùng với sự bùng nổ của công nghệ và xu hướng chuyển đổi số, ngành điện tử đang trở thành một trong những lĩnh vực thu hút nhiều doanh nhân và nhà đầu tư. Việc thành lập công ty trong ngành này không chỉ giúi hạn ở việc sản xuất phần cứng mà còn mở rộng sang các dịch vụ...
-
Channel: Xu hướng, nhu cầu và thị trường
hôm nay, 21:02 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
-
bởi namlangnhoXin chào mọi người. E có sử dụng 1 cục nguồn tổ ong 12v-30A chạy đèn led xe trà sữa. Mà thợ thi công bị rò điện nên điện rò ra khung xe. E dùng đồng hồ đo điện ở khung xe và cả output thì thấy có dòng điện xoay chiều hơn 100v. Nên chạm...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 00:12 -
-
bởi Manh.n.trCác bác cho em hỏi cách điều chế xung răng cưa sang xung vuông với ạ. Em đang thấy khó ạ...
-
Channel: Kỹ thuật điện tử tương tự
13-12-2024, 20:46 -
-
Trả lời cho hỏi về thiết kế mạch tuần tự trên proteusbởi Hatruong1309
-
Channel: Hỗ trợ học tập
12-12-2024, 00:33 -
Comment