سلام من می خوام یه ماشین حساب با 8051 بسازم.برای برنامه نویسی کسی می تونه کمکم کنه؟
اطلاعیه
Collapse
No announcement yet.
ماشین حساب
Collapse
X
-
پاسخ : ماشین حساب
نوشته اصلی توسط مرتضی.ب.بسلام من می خوام یه ماشین حساب با 8051 بسازم.برای برنامه نویسی کسی می تونه کمکم کنه؟
این پروژه به زبان اسمبلی هم در سایت هست، یه جستجو بکنید پیدا میکنید
موفق باشید.شأن انسان در ایمان و هجرت و جهاد است و هجرت، مقدمهآی جهاد فیآسبیلآالله.
هجرت، هجرت از سنگینیآهاست و جاذبهآهایی که تو را به خاک میآچسباند.
چکمهآهایت را بپوش، رهآتوشهآات را بردار و هجرت کن.
-
پاسخ : ماشین حساب
سلام دوست عزیز این برنامه یک ماشین حساب ساده
ORG 0000H
JMP MAIN
ORG 0030H
;**************************** BARNAMEYEH ASLI **********************************
MAIN:clr c
;P3.0 connected to RS pin
;P3.1 connected to R/W pin
;P3.2 connected to E pin
MOV P2,#0FH ; keyboard
MOV P1,#00 ; lcd display
CAll INIT_LCD
CALL DESING_CHAR
CLR A
CLR 01H
mov a,#38h
call command
CALL C_L_lcd
setb p3.4 ; sine key
setb p3.5 ; cosine key
CALL C_L_RAM
;------------------------------BARNAMEYEH YAFTAN KELID ---------------------------
KEY_F:
CLR A
mov p2,#0FH
mov a,p2
anl a,#00001111b
cjne a,#00001111b,k1
CLR A
MOV P2,#0FH
JMP COUN
k1:mov r2,#255
TEK:mov r3,#200
djnz r3,$
djnz r2,TEK
mov a,p2
anl a,#00001111b
cjne a,#00001111b,K2
CLR A
MOV P2,#0FH
JMP COUN
K2:mov p2,#01111111b ; row_0
mov a,p2
anl a,#00001111b
cjne a,#00001111b,row0
mov p2,#10111111b ; row_1
mov a,p2
anl a,#00001111b
cjne a,#00001111b,row1
mov p2,#11011111b ; row_2
mov a,p2
anl a,#00001111b
cjne a,#00001111b,row2
mov p2,#11101111b ; row_3
mov a,p2
anl a,#00001111b
cjne a,#00001111b,row3
CLR A
MOV P2,#0FH
JMP COUN
row0:mov dptr,#kcode0
sjmp find
row1:mov dptr,#kcode1
sjmp find
row2:mov dptr,#kcode2
sjmp find
row3:mov dptr,#kcode3
find:rrc a
jnc match
inc dptr
sjmp find
match:clr a
movc a,@a+dptr
cjne a,#10001100b,OVC
jnb 01h,K3
clr 01h
mov a,#8fh
call command
mov a,#' '
call data_dis
mov p2,#0fh
JMP COUN
K3:call c_L_lcd
call c_L_RAM
mov p2,#0fh
JMP COUN
OVC:jnb 01h,key1
mov p2,#0fh
JMP COUN
key1:cjne a,#10011110b,key2
setb 00h
CLR 02H
call c_l_lcd
mov a,#80h
call command
mov dptr,#res
call display
clr a
MOV P2,#0FH
JMP COUN
key2:cjne a,#10111001b,key3
setb 03h
setb 02h
mov a,#8fh
call command
mov a,#'+'
call data_dis ; (+)
clr a
MOV P2,#0FH
JMP COUN
key3:cjne a,#10111111b,key4
setb 04h
setb 02h
mov a,#8fh
call command
mov a,#'-'
call data_dis ; (-)
clr a
MOV P2,#0FH
JMP COUN
key4:cjne a,#10111110b,key5
setb 06h
SETB 02H
mov a,#8fh
call command
mov a,#'*'
call data_dis ; (*)
clr a
MOV P2,#0FH
JMP COUN
key5:cjne a,#10011010b,NU_1
setb 05h
setb 02h
mov a,#8fh
call command
mov a,#'/'
call data_dis ; (%)
clr a
MOV P2,#0FH
JMP COUN
NU_1:jb 02h,NU_2
mov r2,65h
mov b,a
cjne r2,#00,K5
mov a,#83h
call command
MOV 66H,#47H
jmp go
K5:
cjne r2,#08h,go
mov 65h,r2
MOV P2,#0FH
JMP COUN
go:MOV DPTR,#NEMA
mov r0,66h
mov a,b
MOV @R0,A
movC A,@A+DPTR
call data_dis
DEC r0
mov 66h,r0
inc 65h
MOV P2,#0FH
JMP COUN
NU_2:mov r3,67h
mov b,a
cjne r3,#00h,K7
mov a,#0c3h
call command
MOV 68H,#57H
K6:MOV DPTR,#NEMA
mov r0,68h
mov a,b
mov @r0,a
MOVC A,@A+DPTR
call data_dis
DEC r0
mov 68h,r0
inc 67h
MOV P2,#0FH
JMP COUN
K7:cjne r3,#08h,K6
mov 67h,r3
MOV P2,#0FH
COUN:jb p3.4,K8
setb 07h
mov a,#80h
call command
mov dptr,#sin
call display ; (s)_ sin
clr a
jmp chek
K8:JB P3.5,chek
setb 08h
mov a,#80h
call command
mov dptr,#cos
call display ; (c)_ cos
clr a
chek:JNB 00H,BACK ; =
JB 01H,BACK ; 0v
JB 03H,JAM ; +
JB 04H,KAM ; -
JB 05H,TAG ; %
JB 06H,ZAR ; *
JB 07H,SIN_1 ; SIN
JB 08H,COS_1 ; COS
BACK:JMP KEY_F
JAM:CALL ADDER
JMP KEY_F
KAM:CALL SUBTRACT
JMP KEY_F
TAG:CALL DIVIDE
JMP KEY_F
ZAR:CALL MULTIP
JMP KEY_F
SIN_1:CALL SINE
JMP KEY_F
COS_1:CALL COSINE
JMP KEY_F
;----------------------------------------- BARNAMEYEH JAM ------------------------------
ADDER:
CLR 00H
clr c
MOV DPTR,#NEMA
adad:mov r5,#00
INC 66H
INC 68H
mov a,65h
cjne a,67h,comp
jmp SAVE
comp:JNC SAVE
mov r2,67h
MOV 30H,R2
mov r3,#00
jmp START1
SAVE:mov r2,65h
MOV 30H,R2
mov r3,#00
START1:clr a
clr c
mov r0,66h
mov r1,68h
mov a,@r0
add a,@r1
da a
add a,r5
da a
inc r3
inc r1
mov 68h,r1
mov r4,a
anl a,#0fh
mov @r0,a
inc r0
mov 66h,r0
mov a,r4
anl a,#0f0h
cjne a,#00,CARRY
mov r5,#00
jmp LOOP
CARRY:mov r5,#01
LOOP:djnz r2,START1
mov a,r5
cjne r5,#00,CARRY2
DEC R0
jmp DIS
CARRY2:mov @r0,a
inc r3
cjne r3,#09,DIS
dec r3
dec 66H
mov a,#8fh
call command
mov a,#'E'
call data_dis
setb 01h
DIS:jnb 04h,adad1
ret
adad1:mov a,#86h
call command
LOOP2:mov a,@r0
movc a,@a+dptr
call data_dis
dec r0
djnz r3,LOOP2
INC R0
MOV 66H,R0
DEC 66H
MOV A,30H
MOV 65H,A
clr 03h
SETB 02H
clr c
mov 68h,#57h
mov 67h,#00
mov r4,#16
mov r0,#50h
dada3:mov @r0,#00
inc r0
djnz r4,dada3
ret
;---------------------------------------BARNAMEYEH TAFRIG--------------------------
SUBTRACT:
clr c
CLR 00H
MOV DPTR,#NEMA
jnb 0bh,ssu
call adad
jmp su51
ssu:CLR 0BH
INC 66H
INC 68H
MOV A,65H
mov 70h,a
CJNE A,67H,COMP2
MOV R2,65H
MOV A,66H
ADD A,65H
dec A
MOV R0,A
MOV A,68H
ADD A,67H
dec A
MOV R1,A
COMP3:MOV A,@R0
CLR C
SUBB A,@R1
JNC COMP4
INT0ON:MOV A,68H
XCH A,66H
XCH A,68H
SETB 0BH
JMP START_1
COMP4:CJNE A,#00,START_0
DEC R0
DEC R1
DJNZ R2,COMP3
MOV a,#86h
call command
mov a,#'1'
call data_dis
JMP SU8
START_0:mov r2,65h
jmp START_1
COMP2:jnc START_0
mov r2,67h
jmp SU2
START_1:mov r3,#00
CLR C
su1:mov r0,66h
mov r1,68h
jnb 0ah,su2
mov a,@R1
INC A
mov @r1,a
SU2:mov a,@r0
CLR C
subb a,@r1
jnc su3
cpl a
INC A
CLR C
mov @R1,a
mov a,#0ah
subb a,@R1
mov @r0,a
SETB 0AH
jmp su4
su3:mov @r0,a
clr 0AH
su4:inc r0
CLR C
CLR A
mov 66h,r0
inc r1
mov 68h,r1
inc r3
djnz r2,su1
JNB 05H,SU5
RET
SU5:jnb 07h,su51
ret
su51:MOV a,#87h
call command
DEC 66H
MOV R0,66H
MOV B,R3
SU6:MOV A,@R0
MOVC A,@A+DPTR
call data_dis
DEC R0
DJNZ R3,SU6
JNB 0BH,SU8
MOV a,#86h
call command
mov a,#'-'
call data_dis
MOV R3,B
MOV R0,66H
MOV R1,#47H
SU7:MOV A,@R0
MOV @R1,A
DEC R1
DEC R0
DJNZ R3,SU7
SU8:INC R0
MOV 66H,R0
DEC 66H
mov 65h,70h
mov 70h,#00
MOV 67H,#00
mov 68h,#57h
mov r4,#16
mov r0,#50h
suus3:mov @r0,#00
inc r0
djnz r4,suus3
SETB 02H
CLR 04H
CLR C
RET
دیدگاه
-
پاسخ : ماشین حساب
نوشته اصلی توسط میلاد موسویببین وحید جان خودت بشینی بنویسی بهتره.
خودت شروع کن هرجا به مشکل خوردی تو انجمن بگو کمکت میکنن.:job: :job:
دوش دیوانه شدم عشق مرا دید و بگفت آمدم نعره مزن جامه مدر هیچ مگو
گفتم ای عشق من از چیز دگر میترسم گفت آن چیز دگر نیست دگر هیچ مگو
من به گوش تو سخنهای نهان خواهم گفت سر بجنبان که بلی جز که به سر هیچ مگو
قمری جان صفتی در ره دل پیدا شد در ره دل چه لطیف است سفر هیچ مگومولانا
دیدگاه
دیدگاه