-1 - برنامه بنویسید که LED ها را یک در میان روشن کند.
ORG 00H
Javad: MOV P2,#55H
SJMP javad
END
2-1-
الف) ثابعی با نام delay 1sec طوری بنویسید که 1sec تاخیر ایجاد کند.
Delay:
MOV R3, # 4
Next3:
MOV R1, # 206
Next2:
MOV R0,# 200
DJNZ R0,$
DJNZ R1, Next2
DJNZ R3,Next3
RET
ب)برنامه بنویسید که تمام LED ها را با تاخیر 1Secروشن و خاموش کند . ORG 00H
Start: MOV P2, 00H
LCALL Delay
MOV P2, #FF H
LCALL Delay
SJMP Start
END
2-2-برنامه بنویسید که LED ها را با تاخیر 1Secو به صورت حالت های زیر روشن کند
Of- Of -Of- Of-Of- Of-Of -Of
On-On-On-On-On-On-On-On
Of- Of -Of- Of-Of- Of-Of -Of
On-On-On-On-On-On-On-On
Of- Of -Of- Of-Of- Of-Of -Of
On-On-On-On-Of- Of-Of -Of
Of- Of -Of- Of-Of- Of-Of -Of
Of- Of -Of-Of-On-On-On-On
ORG 00H
Start: MOV R2,#2
Next1:MOV P2 ,# 00H
LCALL Delay
MOV P2,# 0FF H
LCALL Delay
DJNZ R2,Next1
MOV P2, # 00H
LCALL Delay
MOV P2, #0F0H
LCALL Delay
MOV P2,#00H
LCALL Delay
MOV P2,# 0FH
LCALL Delay
SJMP Start
END
3-1-برنامه فلاشر را طوری بنویسید که هر یک از حالت ها در حافظه ROM ذخیره شود .
00H,0FFH,00H,55H,0AAH,55H,0AAH
ORG 00H
START: MOV R7,#9
MOV DPTR, #FLASH
NEXT: CLR A
MOVC A , @A+ DPTR
MOV P2 , A
LCALL DELAY
INC DPTR
DJNZ R7, NEXT
SJMP START
FLASH: DB 00H,0FFH,00H,55H,0AAH,55H,0AAH
DELAY:MOV R3,# 4
NEXT3:MOV R1,# 206
NEXT2:MOV R0,#200
DJNZ R0, $
DJNZ R1, NEXT2
DJNZ R3, NEXT3
RET
END
3-2-برنامه بالا را طوری تغییر دهید که اولین داده نشان دهنده تعداد حالت ها باشد.
9, 00H,0FFH,00H,55H,0AAH,55H,0AAH
4-1-
الف)تابعی بنویسید که تعداد یک رقمی موجود در رجیستر A را روی سون سگمنت نمایش دهد .
Seven seg: MOV A, 30H
MOV DPTR , #SEVEN
MOVC A,@A+ DPTR
CLR P3.6
CLR P3.5
MOV P2, A
SETB P3.7
RET
SEVEN: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H
ب) برنامه ای بنویسید که رقم دلخواه 5 را رموی سون سگمنت نمایش دهد.
ORG 00H
START: MOV 30H,# 6
LCALL Seven seg
SJMP START
END
4-2-برنامه ای بنویسید که سون سگمنت به صورت ثانیه شمار تک رقمی عمل کند.
ORG 00
START: MOV R7, #10
MOV DPTR, #SEVEN
NEXT : CLR A
MOVC A, @A+DPTR
CLR P3.6
CLR P3.5
MOV P2, A
SETB P3.7
LCALL DELAY
INC DPTR
DJNZ R7, NEXT
SJMP START
SEVEN: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H
DELAY: MOV R3,#
NEXT3: MOV R1,#
NEXT2: MOV R0,#
DJNZ R0, $
DJNZ R1, NEXT2
DJNZ R3, NEXT3
RET
END
5-1-الف)تابعی بنویسید که صبرکند تا میکروسوئیچ رها شود.سپس صبر کند تا میکروسوئیچ فشرده شود. آن گاه از تابع خارج شود.
Micro :
NOT R : JNB P3.3, $
LCALL DELAY
JNB P3.3,NOT R
NOT P: JB P3.3,$
LCALL DELAY
JB P3.3 ,NOT P
RET
DELAY : MOV R1,#99
NEXT: MOV R0,#100
DJNZ R0, $
DJNZ R1,NEXT
RET
ب)برنامه بنویسید که هر بار با فشردن میکروسوئیچ یک واحد به سون سگمت اضافه کند.
ORG 00H
START: MOV R7, #10
MOV DPTR, #SEVEN
NEXT1: CLR A
MOVC A, @ A+DPTR
CLR P3.6
CLR P3.5
MOV P2,A
SETB P3.7
LCALL Micro
INC DPTR
DJNZ R7, NEXT1
SJMP START
SEVEN: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H
END
6-1-الف) تابعی بنویسید که صبر کند تا تمام کلید های صفحه کلید رها شود آنگاه صبر کند تا کلیدی فشرده شود . سپس شماره کلید را در رجیستر ذخیره نموده و از تابع خارج شود.
KEY BORD:
MOV P0,#70H
NOT R: MOV A, P0
ANL A, #1110000B
CJNE A, #1110000B, NOT R
LCALL DELAY
MOV A, P0
ANL A, #1110000B
CJNE A, #1110000B,NOT R
MOV P0,#70H
NOT P: MOV A, P0
ANL A,#1110000B
CJNE A, #1110000B,P1
LJMP NOT P
P1: LCALL DELAY
MOV A, P0
ANL A, #1110000B
CJNE A, #1110000B,P2
LJMP NOT P
P2: MOV P0,#1111110B
MOV A, P0
ANL A, #1110000B
CJNE A, #1110000B,R1
MOV P0,#1111101B
MOV A, P0
ANL A, #1110000B
CJNE A, #1110000B,R2
MOV P0,#1111011B
MOV A,P0
ANL A, #1110000B
CJNE A, #1110000B,R3
MOV P0,#1110111B
MOV A, P0
ANL A, #1110000B
CJNE A, #1110000B,R4
LJMP NOT P
RET
ب)برنامه بنویسید که با فشردن هر کلید شماره آنرا روی سون سگمنت نمایش دهد.
ORG 00H
SETB P3.7
CLR P3.6
CLR P3.5
CLR P3.4
NEXT1: CLR
LCALL KEY BORD
MOV DPTR,# SEG
MOVCA, @A+DPTR
MOV P2,A
LJMP NEXT1
R1: MOV DPTR, #KEY R1
LJMP F
R2: MOV DPTR, #KEY R2
LJMP F
R3: MOV DPTR, #KEY R3
LJMP F
R4: MOV DPTR, #KEY R4
LJMP F
F: JB ACC.4,CLM2
MOV A#0
LJMP S
CLM2: JB ACC.5,CLM3
MOV A,#1
LJMP S
CLM3: JB ACC.6,F
MOV A, #2
LJMP S
S: MOVC A,@A+DPTR
RET
KEY R1: DB 1,2,3
KEY R2: DB 4,5,6
KEY R3: DB 7,8,9
KEY R4: DB 10,0,11
DELAY: MOV R1,#99
NEXT: MOV R0,#100
DJNZ R0, $
DJNZ R1,NEXT
RET
SEG: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H