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
-
chi đâu , khai báo 1 hằng số , nếu giá trị đọc ra từ DS = hằng số này thì kích báo chuông .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.
-
Ví dụ bằng asm so sánh giờ phút giây rùi đổ chuông nè, tới đúng giờ hẹn thì loa sẽ kêu trong vòng 15s. Ô nhớ 05h và 06h chứa giá trị giờ phút hiện tại, còn giá trị hẹn được lấy từ ram của DS12c887 (lưu kiểu này khỏi lo mất điện).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
-
bởi mèomướpDạ chú rủ cô ấy đi ăn uống, cà phê, xem phim...nhớ nắm tay, rồi thì ôm hôn,...trong vòng 1 tuần mà ko nắm tay được, 1 tháng mà ko ôm đc thì dẹp ngay và luôn ạ. Nhắn tin, gọi điện ít thôi ạ, trả lời quá lâu hoặc ko trả lời cũng dẹp ngay ạ. Nên thể hiện chú là người có điều kiện nữa ạ...
-
Channel: Tâm tình dân kỹ thuật
08-02-2026, 18:50 -
-
bởi songchodep76Cảm ơn bác đã nhiệt thành chia sẻ kinh nghiệm bản thân mình cho mọi người.
Tuy nhiên, theo tiếp xúc hạn hẹp của em với mosfet thì vấn đề bác đo vôn ở cực D và thấy đỉnh nó 70V/55V Vds max, như thí nghiệm và trong hình của bác...-
Channel: Hướng dẫn sử dụng diễn đàn
07-02-2026, 09:46 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Cho tới thời điểm này, quả thật Đình Thường đây quá thất vọng, không hào hứng với Suno-AI lắm bởi ra lệnh Creat mấy chục lần với các thay đổi thì mới chọn được 2 bản hát đúng giai điệu tầm 80% để cắt ghép tạo thành bài hát...
-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 17:01 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Kính chào cả nhà, nhân dịp Tết đang về, sắp 23 tháng chạp rồi, xin gởi lời chúc xuân qua bài hát sau ạ:
Bao nhiêu hân hoan
Chúc Mừng Năm Mới, xuân sang!
Nơi nơi hát vang
nâng chén vui chúc câu An Lành.
Vạn Sự đều Hanh Thông,
Rạng...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 16:46 -
-
bởi ittcChán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 00:18 -
-
bởi bqvietCó thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
-
Channel: Điện tử công suất
05-02-2026, 18:36 -
-
bởi Nexus 6Pcho e hỏi, khi mạch có linh kiện nào đó hư thì có làm hỏng led đắt tiền (osram) không?
-
Channel: Điện tử công suất
05-02-2026, 10:42 -
-
bởi chinhnguyen9· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%):
* Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...-
Channel: Hướng dẫn sử dụng diễn đàn
04-02-2026, 09:16 -
-
bởi Nexus 6Pe dùng KiCad 9.0 và đã xuất được file PDF mạch in gòi bác...
-
Channel: Điện tử công suất
03-02-2026, 16:25 -
-
bởi bqvietBấm chuột vào các tệp sẽ bật ra chương trình tương ứng. Nên dùng bản KiCAD sau
https://kicad-downloads.s3.cern.ch/a...ll_version.exe-
Channel: Điện tử công suất
03-02-2026, 14:57 -

Comment