-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 END 7-1-الف)تابعی جهت ایجاد تاخیر 100ms بنویسید.
DELAY: MOV R2,#100 : MOV R3,#170 DJNZ R3, $ DJNZ R2, NEXT2 RET ب)تابعی بنویسید که کد دستور موجود در رجیستر A را در رجیستر LCD بنویسد.
INIT LCD: MOV R0,#5 MOV DPTR,# LCD COD NEXT: CLR A MOVC A,@ A+DPTR LCALL WRITE CO LCALL DELAY LNC DPTR DJNZ R0,NEXT RET LCD COD: DB 38H,0EH,01H,06H,80H WRITE CO: MOV P1,A CLR P3.6 CLR P3.1 SETB P3.2 CLR P3.2 RET ج)تابعی بنویسید که کد اسکی کاراکتر موجود در رجیستر A رادر رجیستر LCD بنویسد.
WRITE LCD: MOV R1,#6 MOV DPTR,# NAME NEXT1: CLR A MOVC A, @A+DPTR LCALL WRITE DA LCALL DELAY INC DPTR DJNZ R1,NEXT1 RET NAME: DB “JAVAD”,0 WRITE DA: MOV P1,A SETB P3.0 CLR P3.1 SETB P3.2 CLR P3.2 RET د)برنامه بنویسید که نام شما را روی LCD و در سطر اول بنویسد.
ORG 00H LCALL INIT LCD LCALL WRITE LCD SJMP $ END