Mình đang học lập trình ASM, làm chương trình báo chuông. MÌnh dùng ds12887+89s52 hiện thị led 7 đoạn.Mình đọc hết trong diễn đàn chỉ thấy làm để hiện thị giờ phút giây, chưa thấy ai lập trình báo chuông (dùng ds12887). Ai tưng làm hay có kinh nghiệm chỉ giúp mình với. Hiện thị giờ, phút, giây thì được rồi nhưng làm cách nào để có thể cài đặt số lần báo giờ, đổ chuông theo ý mình cài đặt.
Thông báo
Collapse
No announcement yet.
Ai có kinh nghiệm giúp với
Collapse
X
-
Nguyên văn bởi rebelhp Xem bài viếtMình đang học lập trình ASM, làm chương trình báo chuông. MÌnh dùng ds12887+89s52 hiện thị led 7 đoạn.Mình đọc hết trong diễn đàn chỉ thấy làm để hiện thị giờ phút giây, chưa thấy ai lập trình báo chuông (dùng ds12887). Ai tưng làm hay có kinh nghiệm chỉ giúp mình với. Hiện thị giờ, phút, giây thì được rồi nhưng làm cách nào để có thể cài đặt số lần báo giờ, đổ chuông theo ý mình cài đặt.
-
Nguyên văn bởi rebelhp Xem bài viếtnói vậy ai chả nói được. Ko biết thì mình mới hỏi chứ? bạn có thể nói rõ hơn ko? nếu có tài liệu cụ thể thì hay. muốn đặt bao nhiều lần báo giờ trong ngày chằng hạn?
Đây là trích đoạn phần so sánh giúp bạn dễ hình dung:
SOSANHHEN:
MOV R0,#REG_PHUTHEN
MOVX A,@R0
MOV 3AH,A
MOV R0,#REG_GIOHEN
MOVX A,@R0
MOV 3BH,A
MOV A,05H
CJNE A,3AH,THOATSOSANH
MOV A,06H
CJNE A,3BH,THOATSOSANH
MOV A,R4
IF A < #16H THEN LJMP KICHLOA ;THOI GIAN LOA KEU (TINH BANG GIAY)
SETB LOA
RET
KICHLOA:
CLR LOA
RET
THOATSOSANH:
SETB LOA
RET
Comment
-
thanks anh rất nhiều. đọc hướng dẫn của anh cũng sáng ra được một ít. ASM lại có cả lệnh IF...THEN ah?Em có một ví dụ lập trình xong về giờ, phút, giây như sau. anh có thể cho hướng đi cụ thể về phần hẹn giờ ko? và mình hẹn nhiều lần để nó tự đổ chuông thì làm thế nào( như chuông báo tiết học
;##########P3 điều khiển các đoạn, P1 dk các led, P0 nối vơi AD RTC,
; ##########P2.3 chỉnh thời gian, P2.2 TANG_H, P2.1 TANG PHUT,P2.0 UPDATE
AD EQU P0
CS BIT P2.7
AS BIT P2.6
RW BIT P2.5
DSS BIT P2.4
PHUT_CHINH EQU 42H
GIO_CHINH EQU 43H
THU_CHINH EQU 44H
MAIN: SETB CS
MOV 30H,#0; o nho giây
MOV 31H,#0; chuc giây
MOV 32H,#0;phút
MOV 33H,#0;chuc phút
MOV 34H,#0; giờ
MOV 35H,#0; chục giờ
MOV 36H,#0;lưu ô nhớ giây
MOV 37H,#0;lưu ô nhớ phút
MOV 38H,#0; lưu o nhớ giờ
MOV 39H,#0; luu o nhớ thứ
MOV 40H,#0; thứ
MOV 41H,#0; CHUCTHU
MOV 42H,#0; giá trị phút sau khi đã chỉnh xong
MOV 43H,#0; giá trị giờ sau khi đã chỉnh xong
AGAIN: LCALL DOC
LCALL BIN_BCD
LCALL OUTLED
JNB P2.3,TIEPSUC
SJMP AGAIN
TIEPSUC: LJMP CHINH_TG
DOC: MOV A,#00H
LCALL WRITE_ADD
MOV A,#0FFH
MOV AD,A
LCALL READ
MOV 36H,A
MOV A,#02H
LCALL WRITE_ADD
MOV A,#0FFH
MOV AD,A
LCALL READ
MOV 37H,A
MOV A,#04H
LCALL WRITE_ADD
MOV A,#0FFH
MOV AD,A
LCALL READ
MOV 38H,A
MOV A,#06H
LCALL WRITE_ADD
MOV A,#0FFH
MOV AD,A
LCALL READ
MOV 39H,A
RET
WRITE_ADD: SETB CS
MOV AD,#0FFH
CLR RW
CLR DSS
CLR AS
NOP
SETB DSS
SETB RW
NOP
SETB AS
CLR CS
MOV AD,A
CLR AS
RET
READ: CLR DSS
NOP
MOV A,AD
SETB DSS
SETB CS
SETB AS
RET
BIN_BCD: MOV A,36H
MOV B,#10
DIV AB
MOV 30H,B
MOV 31H,A
MOV A,37H
MOV B,#10
DIV AB
MOV 32H,B
MOV 33H,A
MOV A,38H
MOV B,#10
DIV AB
MOV 34H,B
MOV 35H,A
MOV A,39H
MOV B,#10
DIV AB
MOV 40H,B
MOV 41H,A
RET
OUTLED: MOV A,40H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.6
LCALL DELAY500US
SETB P1.6
MOV A,41H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.7
LCALL DELAY500US
SETB P1.7
MOV A,30H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.0
LCALL DELAY500US
SETB P1.0
MOV A,31H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.1
LCALL DELAY500US
SETB P1.1
MOV A,32H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.2
LCALL DELAY500US
SETB P1.2
MOV A,33H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.3
LCALL DELAY500US
SETB P1.3
MOV A,34H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.4
LCALL DELAY500US
SETB P1.4
MOV A,35H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.5
LCALL DELAY500US
SETB P1.5
RET
DELAY500US: MOV R0,#250
DJNZ R1,$
RET
;##################CHINH_THOI_GIAN################ ########
CHINH_TG:
LCALL DELAYNUT
JB P2.3,TIEPSUC4
LCALL LED_CHINH; HIEN THI RA LED GIA TRI HIEN TAI
CHINH_GIO1: LCALL DISPLAY
JNB P2.2,TIEPSUC1
JNB P2.1,TIEPSUC2
JNB P2.0,TIEPSUC3
JNB P2.3,TIEPSUC5
SJMP CHINH_GIO1
TIEPSUC1: LJMP TANG_GIO
TIEPSUC2: LJMP TANG_PHUT
TIEPSUC3: LJMP TANG_THU
TIEPSUC4: LJMP AGAIN
TIEPSUC5: LCALL DELAYNUT
JB P2.3 ,CHINH_GIO1
LJMP UPDATE
LED_CHINH:
DV_P EQU 32H; LUU GIA TRI DON VI PHUT VAO DV_P(32H)
CH_P EQU 33H; LUU GIA TRI CHUC PHUT VO CH_P(33H)
DV_H EQU 34H; LUU DON VI GIO VAO DV_H(34H)
CH_H EQU 35H; LUU CHUC GIO VAO CH_H(35H)
DV_THU EQU 40H
DISPLAY: MOV A,DV_P
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.2
LCALL DELAY500US
SETB P1.2
MOV A,CH_P
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.3
LCALL DELAY500US
SETB P1.3
MOV A,DV_H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.4
LCALL DELAY500US
SETB P1.4
MOV A,CH_H
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P3,A
CLR P1.5
LCALL DELAY500US
SETB P1.5
mov a,DV_thu
mov dptr,#maled
movc a,@a+dptr
mov p3,a
clr p1.6
lcall delay500us
setb p1.6
RET
TANG_GIO:
LCALL DELAYNUT ;CHONG NHIEU NUT
JB P2.2,THOATCHINH
MOV A,CH_H
CJNE A,#02,TANG_GIO1
MOV A,DV_H
CJNE A,#03,TANG_GIO2
MOV CH_H,#00
MOV DV_H,#00
LJMP CHINH_GIO1
TANG_GIO1: MOV A,DV_H
CJNE A,#09,TANG_GIO2
INC CH_H
MOV DV_H,#00
LJMP CHINH_GIO1
TANG_GIO2:
INC DV_H
LJMP CHINH_GIO1
;TAÊNG PHUÙT NAØ-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TANG_PHUT: LCALL DELAYNUT
JB P2.1,THOATCHINH
INC DV_P
MOV A,DV_P
CJNE A,#10,THOATCHINH
MOV DV_P,#00
INC CH_P
MOV A,CH_P
CJNE A,#06,THOATCHINH
MOV DV_P,#00
MOV CH_P,#00
TANG_THU: LCALL DELAYNUT
JB P2.0,THOATCHINH
INC DV_THU
MOV A,DV_THU
CJNE A,#08,THOATCHINH
MOV DV_THU,#00
THOATCHINH: LJMP CHINH_GIO1
UPDATE:
ACALL RE_UPDATE
MOV A,#00H
LCALL WRITE_ADD
MOV A,#00
LCALL WRITE_BYTE
NOP
NOP
MOV A,#02H
LCALL WRITE_ADD
MOV A,42H
LCALL WRITE_BYTE
NOP
NOP
MOV A,#04H
LCALL WRITE_ADD
MOV A,43H
LCALL WRITE_BYTE
MOV A,#06H
LCALL WRITE_ADD
MOV A,39h
LCALL WRITE_BYTE
LJMP AGAIN
RE_UPDATE: ;CHUYEN 2GT GIOCHINH VA PHUTCHINH - > BINARY
MOV A,CH_P
MOV B,#10
MUL AB
ADD A,DV_P
MOV 42H,A
MOV A, CH_H
MOV B,#10
MUL AB
ADD A,DV_H
MOV 43H,A
mov 39h,DV_THU
RET
WRITE_BYTE:
CLR RW
NOP
MOV AD,A
SETB RW
NOP
SETB CS
SETB AS
ret
DELAYNUT: MOV R7,#255
LAP: MOV R6,#200
DJNZ R6,$
DJNZ R7,LAP
RET
MALED: DB 0C0H
DB 0F9H
DB 0A4H
DB 0b0H
DB 99H
DB 92H
DB 82H
DB 0f8H
DB 80H
DB 90H
END
Comment
-
Muốn xài If...then trong ASM thì bạn phải xài trình biên dịch prog-studio v5.28. Nó hỗ trợ cho bạn lệnh if...then, nhờ lệnh này mà bạn viết ct sẽ gọn nhẹ và dễ dàng hơn nhiều. Muốn hẹn giờ theo nhiều lần thì phải so sánh các gt giờ hiện tại với các gt hẹn đó thôi bạn à.
Comment
-
Mình cũng đang làm về bộ báo giờ.Khi nhận đề tài ko đọc kĩ cứ tưởng chỉ làm mạch báo chuông thôi ai ngờ khi đọc lại là làm về mạch báo chuông trường học. Phát sinh ra ở đây là phải làm nhiều lần hẹn chuông, rồi đổ chuông trong ngày. Ai từng làm về vấn để này có thể chỉ giúp ko? Mình dùng vdk + RTC
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Màn của e là LCD , e muốn thay thế bằng màn led thì có cáp chuyển đổi nào thực hiện đc việc đó ko nhỉ, nếu có bác mách e với....
-
Channel: Thiết bị điện tử cá nhân
hôm nay, 16:34 -
-
bởi bqvietServo cuối cùng vẫn chỉ là điều chỉnh tốc độ và đọc phản hồi vị trí
Qua cổng song song LPT cổ
https://www.electronicsforu.com/elec...eed-controller
Qua cổng USB - xem thêm đám FT232RL-
Channel: Điện tử công nghiệp
22-11-2024, 15:56 -
-
bởi thiennam0703Em đang tìm hiểu cách xây dựng chương trình điều khiển động cơ Servo Yaskawa bằng máy tính tuy nhiên khi tìm kiếm trên mạng các hướng dẫn thì thường là điều khiển bằng vi điều khiển hoặc điều khiển bằng PLC hay điều khiển động cơ...
-
Channel: Điện tử công nghiệp
22-11-2024, 15:32 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi bacthoMình cũng bị như vậy mà chưa biết ở đâu
-
Channel: Vi điều khiển AVR
21-11-2024, 21:00 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi nhathung1101Câu trả lời là không dùng được.
Hai lớp dán mặt trước và mặt sau, gọi là film phân cực. Muốn hiểu rõ về nó thì chịu khó search nhé. Ở đây có rất nhiều chó cứ ngửi thấy phân là sủa nhặng, nên không giải thích nhiều....-
Channel: Thiết bị điện tử cá nhân
21-11-2024, 16:20 -
-
Comment on Tổng hợp các thông tin về mạch nạp cho AVRbởi Memem
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi MememMọi người ơi cho em hỏi cái này ạ, hiện tại em đang làm btl về hiển thị giá trị nhiệt độ trên led 7 thanh sử dụng atmega16, code em chạy trên mô phỏng rất oke nhưng khi lắp qua mạch thực thì bị lỗi ở led đầu tiên bị lỗi như thế này...
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
bởi mantruongepuNhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
-
Channel: Điện tử dành cho người mới bắt đầu
20-11-2024, 14:40 -
-
bởi TherulCảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
-
Channel: từ PIC tới dsPIC
20-11-2024, 07:20 -
Comment