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
-
Trả lời cho Có nên sử dụng đèn năng lượng mặt trời không?bởi mèomướpDạ cháu thấy tùy trường hợp sẽ tốt hay ko tốt ạ. Ví như những vị trí khó kéo điện thì dùng đèn nlmt tốt, những nơi sẵn điện lưới thì ngược lại...
-
Channel: Chiếu sáng và thi công chiếu sáng
hôm nay, 20:32 -
-
bởi mèomướpDạ chị hàng xóm nhà cháu có máy đo gió ấy ạ. Để mai mốt cháu lẻn sang mượn tạm chị ấy về đo ạ...
-
Channel: Điện tử gia dụng
hôm nay, 20:26 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamHa.ha.ha.
Lần đầu anh thấy đệ đầu đội trời chân đạp .... lại ...s....ợ... ha.ha.ha.
Thôi kệ huynh đệ mình cùng 1 thầy .
...
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 20:12 -
-
bởi dinhthuong80Xin kính chào tất cả những ai quan tâm và có nhã ý giúp đỡ, cùng dinhthuong80 tự tìm công thức tính lưu lượng gió quạt điện (dân dụng), qua đó thử đánh giá quạt điện dân dụng đã thực sự được thiết kế và sử dụng đúng loại cánh quạt để cho hiệu suất năng lượng hiệu quả chưa.
dinhthuong80...-
Channel: Điện tử gia dụng
hôm nay, 16:23 -
-
Trả lời cho Có nên sử dụng đèn năng lượng mặt trời không?bởi dinhthuong80Cá nhân tôi thấy nên hạn chế dùng đèn NLMT vì những tiêu cực sau đây:
1. Khai thác tài nguyên thiên nhiên và năng lượng hóa thạch nhiều hơn, gây cạn kiệt và hiệu ứng nhà kính, tác động xấu đến trái đất nhiều hơn! ( rất nghiêm...-
Channel: Chiếu sáng và thi công chiếu sáng
hôm nay, 15:45 -
-
bởi appongthoMã lỗi H-29 Máy giặt Panasonic là gì?
https://appongtho.com/khac-phuc-loi-...iat-panasonic/
Mã lỗi H-29 trên máy giặt Panasonic xảy ra khi hệ thống làm mát gặp sự cố, dẫn đến việc quạt không hoạt động hoặc hoạt động không...-
Channel: Điện tử gia dụng
hôm nay, 09:44 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101Mà đệ tính, tửu lượng đệ là 2 lít. Huynh theo SÙ PHÙ trước nên là 4 lít.
Lão Đinh Vặn dám cân tất cả anh em 4r, thì phải 300 lít.
Mỗi tội, Đinh lão í chỉ để Vặn. Nên lôi được ra cũng là cả vấn đề.
...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 01:25 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamCái đó phải hỏi bà í, huynh đâu biết chỉ biết uống riệu với đệ thôi....
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 00:53 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101Đây có đệ đây...
Vừa hàn lại cái cánh máy bay bà già nên hơi mệt!
Dưng mà hàn mãi không được, đệ bực quá bèn "tè" vào chỗ cần hàn. Thế mà ok.
Huynh giải thích hộ cái....
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 00:43 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamNhà thùng thế nào rồi? bình an chứ? đệ nghe lời huynh đi, bất cứ việc gì cũng nghe lời bà í, để an toàn uống riệu với huynh.
Bà lão nhà mình, mình sợ ko gì xấu hổ cả.
Huynh lại độc ẩm .-
Channel: Tâm tình dân kỹ thuật
hôm nay, 00:16 -
Comment