求助:关于80C51单片机简易计算器设计的程序,要求是汇编语言。谢谢哈 基于51单片机的简易计算器设计,急

\u6c42\u57fa\u4e8eAT89C51\u5355\u7247\u673a\u7b80\u6613\u8ba1\u7b97\u5668\u8bbe\u8ba1\u7684\u7a0b\u5e8f\uff0c\u8bf7\u5e2e\u5e2e\u5fd9\uff0c\u8c22\u8c22\u3002

#include
delay10ms()
{
unsigned char a,b;
for(a=100;a>0;a--)
for(b=50;b>0;b--);
}
delay1ms()
{
unsigned char a,b;
for(a=10;a>0;a--)
for(b=50;b>0;b--);
}
unsigned char code tab[]=
{
0x3f,6,0x5b,0x4f,0x66,0x6d,0x7d,7,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
main()
{
unsigned char m,i,j,k,l,p,cc2,cc3,cc4,cc5,o;
unsigned long c1,c2,cc;
unsigned int cc1;
unsigned char aa0,aa1,aa2,aa3,bb0,bb1,bb2,bb3;
unsigned char a0,a1,a2,a3,b0,b1,b2,b3;
bit q,n;
while(1)
{static dian=0x80,fuhao=0;
for (j=0;j<=3;j++)
{
k=0xfe<<j;
l=0xfe>>(8-j);
P0=k|l;
if(P0_4==0)
{
delay10ms();
if(P0_4==0)
{
while(P0_4==0)
{
P2=b0;
P1=0xfe;
delay1ms();
P2=0;
P2=b1;
P1=0xfd;
delay1ms();
P2=0;
P2=b2;
P1=0xfb;
delay1ms();
P2=0;
P2=b3;
P1=0xf7;
delay1ms();
P2=0;
P2=a0;
P1=0xef;
delay1ms();
P2=0;
P2=a1;
P1=0xdf;
delay1ms();
P2=0;
P2=a2;
P1=0xbf;
delay1ms();
P2=0;
P2=a3;
P1=0x7f;
delay1ms();
P2=0;
P2=dian;
P1=0xef;
delay1ms();
P2=0;

P2=fuhao;
P1=0xef;
delay1ms();
P2=0;
}
if(tab[4*j]==0x39)
{
n=1;
i=3;
}
else
{m++;
if(m<=4&n==0)
{
a3=a2;
a2=a1;
a1=a0;
a0=tab[4*j];
aa3=aa2;
aa2=aa1;
aa1=aa0;
aa0=4*j;
}
else
{
if(p<=3&n==1)
{
b3=b2;
b2=b1;
b1=b0;
b0=tab[4*j];
bb3=bb2;
bb2=bb1;
bb1=bb0;
bb0=4*j;

p++;
}
}
}
}
}
if(P0_5==0)
{
delay10ms();
if(P0_5==0)
{
while(P0_5==0)
{
P2=b0;
P1=0xfe;
delay1ms();
P2=0;
P2=b1;
P1=0xfd;
delay1ms();
P2=0;
P2=b2;
P1=0xfb;
delay1ms();
P2=0;
P2=b3;
P1=0xf7;
delay1ms();
P2=0;
P2=a0;
P1=0xef;
delay1ms();
P2=0;
P2=a1;
P1=0xdf;
delay1ms();
P2=0;
P2=a2;
P1=0xbf;
delay1ms();
P2=0;
P2=a3;
P1=0x7f;
delay1ms();
P2=0;
P2=dian;
P1=0xef;
delay1ms();
P2=0;

P2=fuhao;
P1=0xef;
delay1ms();
P2=0;
}
if(tab[4*j+1]==0x5e)
{
i=4;
n=1;
}
else
{m++;
if(m<=4&n==0)
{
a3=a2;
a2=a1;
a1=a0;
a0=tab[4*j+1];
aa3=aa2;
aa2=aa1;
aa1=aa0;
aa0=4*j+1;
}
else
{
if(p<=3&n==1)
{
b3=b2;
b2=b1;
b1=b0;
b0=tab[4*j+1];
bb3=bb2;
bb2=bb1;
bb1=bb0;
bb0=4*j+1;

p++;
}
}
}
}
}
if(P0_6==0)
{
delay10ms();
if(P0_6==0)
{
while(P0_6==0)
{
P2=b0;
P1=0xfe;
delay1ms();
P2=0;
P2=b1;
P1=0xfd;
delay1ms();
P2=0;
P2=b2;
P1=0xfb;
delay1ms();
P2=0;
P2=b3;
P1=0xf7;
delay1ms();
P2=0;
P2=a0;
P1=0xef;
delay1ms();
P2=0;
P2=a1;
P1=0xdf;
delay1ms();
P2=0;
P2=a2;
P1=0xbf;
delay1ms();
P2=0;
P2=a3;
P1=0x7f;
delay1ms();
P2=0;
P2=dian;
P1=0xef;
delay1ms();
P2=0;

P2=fuhao;
P1=0xef;
delay1ms();
P2=0;
}
if(tab[4*j+2]==0x77)
{
i=1;
n=1;
}
else
{
if(tab[4*j+2]==0x79)
{
q=1;
n=1;
}
else
{
m++;
if(m<=4&n==0)
{
a3=a2;
a2=a1;
a1=a0;
a0=tab[4*j+2];
aa3=aa2;
aa2=aa1;
aa1=aa0;
aa0=4*j+2;
}
else
{
if(p<=3&n==1)
{
b3=b2;
b2=b1;
b1=b0;
b0=tab[4*j+2];
bb3=bb2;
bb2=bb1;
bb1=bb0;
bb0=4*j+2;

p++;
}
}
}
}
}
}
if(P0_7==0)
{
delay10ms();
if(P0_7==0)
{
while(P0_7==0)
{
P2=b0;
P1=0xfe;
delay1ms();
P2=0;
P2=b1;
P1=0xfd;
delay1ms();
P2=0;
P2=b2;
P1=0xfb;
delay1ms();
P2=0;
P2=b3;
P1=0xf7;
delay1ms();
P2=0;
P2=a0;
P1=0xef;
delay1ms();
P2=0;
P2=a1;
P1=0xdf;
delay1ms();
P2=0;
P2=a2;
P1=0xbf;
delay1ms();
P2=0;
P2=a3;
P1=0x7f;
delay1ms();
P2=0;
P2=dian;
P1=0xef;
delay1ms();
P2=0;

P2=fuhao;
P1=0xef;
delay1ms();
P2=0;
}
if(tab[4*j+3]==0x71)
{
i=6;
n=1;
}
else
{
if(tab[4*j+3]==0x7c)
{
i=2;
n=1;
}
else
{m++;
if(m<=4&n==0)
{
a3=a2;
a2=a1;
a1=a0;
a0=tab[4*j+3];
aa3=aa2;
aa2=aa1;
aa1=aa0;
aa0=4*j+3;
}
else
{
if(p<=3&n==1)
{
b3=b2;
b2=b1;
b1=b0;
b0=tab[4*j+3];
bb3=bb2;
bb2=bb1;
bb1=bb0;
bb0=4*j+3;

p++;
}
}
}
}
}
}
if(i==6)//\u590d\u4f4d
{
a0=a1=a2=a3=b0=b1=b2=b3=0;
dian=0x80;
fuhao=0;
m=i=j=k=l=n=p=q=0;
aa0=aa1=aa2=aa3=bb0=bb1=bb2=bb3=0;
c1=c2=cc=cc1=cc2=cc3=cc4=cc5=0;
}
if(q==0)
{
P2=b0;
P1=0xfe;
delay1ms();
P2=0;
P2=b1;
P1=0xfd;
delay1ms();
P2=0;
P2=b2;
P1=0xfb;
delay1ms();
P2=0;
P2=b3;
P1=0xf7;
delay1ms();
P2=0;
P2=a0;
P1=0xef;
delay1ms();
P2=0;
P2=a1;
P1=0xdf;
delay1ms();
P2=0;
P2=a2;
P1=0xbf;
delay1ms();
P2=0;
P2=a3;
P1=0x7f;
delay1ms();
P2=0;
P2=dian;
P1=0xef;
delay1ms();
P2=0;

P2=fuhao;
P1=0xef;
delay1ms();
P2=0;
}
else
{
q=0;
c1=aa0+aa1*10+aa2*100+aa3*1000;
c2=bb0+bb1*10+bb2*100+bb3*1000;
if(i==1)//\u52a0\u6cd5\u8fd0\u7b97
{
cc=c1+c2;
}
if(i==2)//\u51cf\u6cd5\u8fd0\u7b97
{
if(c1>=c2)
{
cc=c1-c2;
}
else
{
cc=c2-c1;
fuhao=0x40;
}
}
if(i==3)//\u4e58\u6cd5\u8fd0\u7b97
{
cc=c1*c2;
}
a3=tab[cc/10000000];
aa3=cc/10000000;
a2=tab[(cc%10000000)/1000000];
aa2=(cc%10000000)/1000000;
a1=tab[(cc%1000000)/100000];
aa1=(cc%1000000)/100000;
a0=tab[(cc%100000)/10000];
aa0=(cc%100000)/10000;
b3=tab[(cc%10000)/1000];
bb3=(cc%10000)/1000;
b2=tab[(cc%1000)/100];
bb2=(cc%1000)/100;
b1=tab[(cc%100)/10];
bb1=(cc%100)/10;
b0=tab[cc%10];
bb0=cc%10;
dian=0;//\u6d88\u9664\u70b9
if(aa3==0)//\u6d88\u9664\u591a\u4f59\u7684\u96f6
{
a3=0;
if(aa2==0)
{
a2=0;
if(aa1==0)
{
a1=0;
if(aa0==0)
{
a0=0;
if(bb3==0)
{
b3=0;
if(bb2==0)
{
b2=0;
if(bb1==0)
{
b1=0;
}
}
}
}
}
}
}
if(i==4)//\u9664\u6cd5\u8fd0\u7b97
{
if(c2==0)
{
for(o=100;o>0;o--)
{
b2=b1=b0=0;
a3=0x79;
a2=a1=b3=0x77;
a0=0x3f;
P2=b0;
P1=0xfe;
delay1ms();
P2=0;
P2=b1;
P1=0xfd;
delay1ms();
P2=0;
P2=b2;
P1=0xfb;
delay1ms();
P2=0;
P2=b3;
P1=0xf7;
delay1ms();
P2=0;
P2=a0;
P1=0xef;
delay1ms();
P2=0;
P2=a1;
P1=0xdf;
delay1ms();
P2=0;
P2=a2;
P1=0xbf;
delay1ms();
P2=0;
P2=a3;
P1=0x7f;
delay1ms();
P2=0;
delay10ms();
}
i=6;
}
else
{
cc1=c1/c2;
a3=tab[cc1/1000];
aa3=cc1/1000;
a2=tab[(cc1%1000)/100];
aa2=(cc1%1000)/100;
a1=tab[(cc1%100)/10];
aa1=(cc1%100)/10;
a0=tab[cc1%10];
aa0=cc1%10;
dian=0x80;
cc2=(c1%c2)*10/c2;
b3=tab[cc2];
cc3=((c1%c2)*10%c2)*10/c2;
b2=tab[cc3];
cc4=(((c1%c2)*10%c2)*10%c2)*10/c2;
b1=tab[cc4];
cc5=((((c1%c2)*10%c2)*10%c2)*10%c2)*10/c2;
b0=tab[cc5];
if((((((c1%c2*10)%c2)*10%c2)*10%c2)*10%c2)*10/c2>=5)
{
b0=tab[cc5+1];
}
if(aa3==0)//\u6d88\u9664\u591a\u4f59\u7684\u96f6
{
a3=0;
if(aa2==0)
{
a2=0;
if(aa1==0)
{
a1=0;
}
}
}
}
}
}
}
}
}
\u8fd9\u4e2a\u662f\u6570\u7801\u7ba1\u7684


ORG 0000H
START:MOV 78H,#0 ;初始化:78H放0的段码,其余放熄灭码
MOV 79H,#10
MOV 7AH,#10
MOV 7BH,#10
MOV 7CH,#10
MOV 7DH,#10
MOV R5, #0 ;R5是按键次数,初始置0
MOV 30H,#0 ;30H是功能键存放单元,置为0
MOV 40H,#0 ;40H单元初始置为0
MOV 41H,#0 ;41H单元初始置为0
LOOP:LCALL DIR
LCALL KEY
INC R5
;散转程序,判断按下的是哪个键
S1:CJNE A,#10,S2 ;不是"+"键,跳到S2
LJMP FUN ;是"+"键,跳到FUN
S2:CJNE A,#11,S3 ;不是"-"键,跳到S3
LJMP FUN ;是"-"键,跳到FUN
S3:CJNE A,#12,S4 ; 不是"*"键,跳到S4
LJMP FUN ; 是"*"键,跳到FUN
S4:CJNE A,#13,S5 ; 不是"/"键,跳到S5
LJMP FUN ; 是"/"键,跳到FUN
S5:CJNE A,#14,S6 ; 不是"="键,跳到S6
LJMP FUN ;是"="键,跳到FUN
S6:CJNE A,#15,N1 ; 不是"CL"键,跳到N1
LJMP START ; 是"CL"键,跳到START
N1:CJNE R5,#1,N2 ;判断第几次按键
LJMP D11
N2:CJNE R5,#2,N3
LJMP T2
N3:CJNE R5,#3,N4
LJMP T3
N4:CJNE R5,#4,N5
LJMP T4
N5:CJNE R5,#5,N6
LJMP T5
N6:CJNE R5,#6,START
LJMP T6

D11:MOV R4,A
MOV 78H,A ;输入值送显示个位缓存
MOV 79H,#10
MOV 7AH,#10
MOV 7BH,#10
MOV 7CH,#10
MOV 7DH,#10
LJMP LOOP
T2:MOV R7,A
MOV B,#10
MOV A,R4
MUL AB
ADD A,R7
MOV R4,A
MOV 7AH,#10
MOV 7BH,#10
MOV 7CH,#10
MOV 7DH,#10
MOV 79H, 78H ;个位到十位
MOV 78H,R7 ;新数为个位
LJMP LOOP
T3:MOV R7,A
MOV B,#10
MOV A,R4
MUL AB
ADD A,R7
MOV R4,A
MOV 7BH,#10
MOV 7CH,#10
MOV 7DH,#10
MOV 7AH,79H ;十位到百位
MOV 79H,78H ;个位到十位
MOV 78H,R7 ; 新数为个位
LJMP LOOP
T4:MOV R7,A
MOV B,#10
MOV A,R4
MUL AB
ADD A,R7
MOV R4,A
MOV 7CH,#10
MOV 7DH,#10
MOV 7BH,7AH
MOV 7AH,79H
MOV 79H,78H
MOV 78H,R7
LJMP LOOP
T5:MOV R7,A
MOV B,#10
MOV A,R4
MUL AB
ADD A,R7
MOV R4,A
MOV 7DH,#10

MOV 7CH,7BH
MOV 7BH,7AH
MOV 7AH,79H
MOV 79H,78H
MOV 78H,R7
LJMP LOOP

T6:MOV R7,A
MOV B,#10
MOV A,R4
MUL AB
ADD A,R7
MOV R4,A
MOV 7DH,7CH
MOV 7CH,7BH
MOV 7BH,7AH
MOV 7AH,79H
MOV 79H,78H
MOV 78H,R7
LJMP LOOP

MOV 7CH,7BH
MOV 7BH,7AH
MOV 7AH,79H
MOV 79H,78H
MOV 78H,R7
LJMP LOOP

FUN:MOV 78H,#10
MOV 79H,#10
MOV 7AH,#10
MOV R0,30H ;与上次功能键交换
MOV 30H,A
MOV A,R0
CJNE A,#10,FUN1 ;判断功能键
LJMP ADDY ;"+"
FUN1:CJNE A,#11,FUN2
LJMP SUBT ;"-"
FUN2:CJNE A,#12,FUN3
LJMP MULT ;"*"
FUN3:CJNE A,#13,FUN4
LJMP DIVI ;"/"
FUN4:CJNE A,#14,FUN5 ;首次按功能键,即A=#0
LJMP EQUA ;"="
FUN5:MOV 40H,R4 ;保存第一个数
MOV R5,#0 ;按键次数清零
LJMP BCD ;将其拆为bcd码,以便后来将其显示
OF:LJMP START ;溢出处理
ADDY:MOV A,40H ;第一个数送累加器
ADD A,R4 ;第一个数加第二个数
JB CY,OF ;溢出
MOV 40H,A ;存本次结果
MOV R5,#0 ;按键次数清零
LJMP BCD
SUBT:MOV A,40H
SUBB A,R4
JB CY,OF
MOV 40H,A
MOV R5,#0
LJMP BCD
MULT:MOV A,40H
MOV B,A
MOV A,R4
MUL AB
JB OV,OF
MOV 40H,A
MOV R5,#0
LJMP BCD
DIVI:MOV A,R4
MOV B,A
MOV A,40H
DIV AB
JB OV,OF
MOV 40H,A
MOV R5,#0
LJMP BCD
EQUA:MOV R5,#0
LJMP BCD
BCD:MOV B,#10
MOV A,40H ;结果送累加器
DIV AB ;结果除10
MOV 41H,A ;暂存"商"
MOV A,B ;取个位数
MOV 78H,A ;个位数送显示缓存
MOV A,41H
JZ RETURN ;结果是一位数,返回LOOP
MOV B,#10
MOV A,41H
DIV AB
MOV 41H,A
MOV A,B
MOV 79H,A ;十位送显示缓存
MOV A,41H
JZ RETURN ;结果是二位数,返回LOOP
MOV 7AH,A ;百位数送显示缓存
RETURN:LJMP LOOP
;动态显示子程序
DIR:MOV DPTR,#TAB ; 数码管译码表首址
MOV R0,#78H ;待显缓冲区个位地址
MOV A,#0FEH ; 个位位选信号
MOV R1,A
LD1:MOV A,@R0
MOVC A,@A+DPTR ;查表
MOV P2,R1 ;共阳极管字位选择送到P2口
MOV P0,A ;字段码送P0口
LCALL DELAY1ms ;调延时1ms 子程序
INC R0 ;R0指向下一模块
MOV A,R1 ;
JNB ACC.5,LD2 ;判断是否发完6个数
RL A ;指向下一个位
MOV R1,A ;位选信号存回R3
SJMP LD1 ;跳去再显示下一个数
LD2:RET ;发完6个数就返回
TAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,80H,90H,0FFH ;共阳极译码表
DELAY1ms:MOV R6,#2
LOOP1:MOV R7,#248
NOP
LOOP2:DJNZ R7,LOOP2
DJNZ R6,LOOP1
RET
KEY:LCALL KS ;调用检测按键子程序
JNZ K1 ;有键按下继续
LCALL DELAY2 ;无键按调用延时去抖
ACALL DIR ;调用动态显示
AJMP KEY ;返回继续检测按键
K1:LCALL DELAY2 ;有键按下延时去抖动
LCALL KS ;再调用检测按腱子程序
JNZ K2 ;确认有按键进行下一步
ACALL DIR ;调用动态显示
AJMP KEY ;无键按下返回继续检测
K2:MOV R2,#0EFH ;将扫描值送入R2暂存
MOV R3,#00H ;将第一列值送入R3暂存
K3:MOV P1,R2 ;将R2值送入P1口
L0:JB P1.0,L1 ;P1.0等于1跳转到L1
MOV A,#00H ;将第一行值送入ACC
AJMP LK ;跳转到键值处理程序
L1:JB P1.1,L2 ;P1.1等于1跳转到L2
MOV A,#04H ;将第二行的行值送入ACC
AJMP LK ;跳转到键值处理程序
L2:JB P1.2,L3 ;P1.2等于1跳转到L3
MOV A,#08H ;将第三行行值送入ACC
AJMP LK ;跳转到键值处理程序
L3:JB P1.3,NEXT ;P1.3等于1跳转到NEXT处
MOV A,#0CH ;将第四行行值送入ACC
LK:ADD A,R3 ;行值与列值相加后的键值送入A
PUSH ACC ;将A中的值送入堆栈暂存
K4:LCALL DELAY2 ;调用延时去抖程序
LCALL KS ;调用按键检测程序
JNZ K4 ;按键没有松开继续返回检测
POP ACC ;将堆栈值送入ACC
MOV DPTR,#KEYTAB
MOVC A,@A+DPTR
RET
NEXT:INC R3 ;列值加一
MOV A,R2 ;R2值送入A
JNB ACC.7,KEY ;扫描完至KEY处进行下一扫描
RL A ;扫描未完将值左移一位进行下一列扫描
MOV R2,A ;将ACC值送入R2暂存
AJMP K3 ;跳转到K3继续
KS:MOV P1,#0FH ;将P1口高四位置0低四位置1
MOV A,P1 ;读P1口
XRL A,#0FH ;将A中的值与A中的值相异或
RET ;子程序返回
KEYTAB:DB 1,2,3,10,4,5,6,11,7,8,9,12,15,0,14,13 ;键值表
DELAY2:MOV R6,#2H ;延时去抖动子程序
LP1:MOV R7,#0FAH
LP2:DJNZ R7,LP2
DJNZ R6,LP1
RET

END

结合1,2,3楼,考虑了溢出问题。花了好多时间才想出来了。
希望对你有帮助。
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV R0,#50H
MOV R7,#10
MOV R2,#00H
MOV A,#00H
LOOP:CLR C
ADD A,@R0
JNC BBB
INC R2
CLR C
BBB: INC R0
DJNZ R7,LOOP
MOV 5CH,A ;把和放5CH,不用管溢出的,和为s1
MOV 5BH,R2 ;把溢出的次数放地址5BH
MOV B,5BH ;溢出的次数给B
MOV A,#19H ;溢出一次相当于 100H=(FAH+10H)=19*BH+ 6*BH /A
MUL AB ;A=溢出部分的平均值,肯定小于0FF
MOV 5AH,A ;第一部分的平均值p1给5AH
MOV A,#6H
MOV B,5BH
MUL AB ;值给5BH,最大值是3CH,所以不用考虑溢出。
ADD A,5CH ;
MOV B,#10
DIV AB ;6B+s1的平均值p2
ADD A,5AH
MOV 5AH,A ;p1+p2
MOV 5BH,B
SJMP $
END


  • 姹傚姪:鍏充簬80C51鍗曠墖鏈虹畝鏄璁$畻鍣ㄨ璁$殑绋嬪簭,瑕佹眰鏄眹缂栬瑷銆傝阿璋㈠搱...
    绛旓細ORG 0000H START:MOV 78H,#0 ;鍒濆鍖栵細78H鏀0鐨勬鐮,鍏朵綑鏀剧唲鐏爜 MOV 79H,#10 MOV 7AH,#10 MOV 7BH,#10 MOV 7CH,#10 MOV 7DH,#10 MOV R5, #0 ;R5鏄寜閿鏁,鍒濆缃0 MOV 30H,#0 ;30H鏄姛鑳介敭瀛樻斁鍗曞厓,缃负0 MOV 40H,#0 ;40H鍗曞厓...
  • 80c51鍗曠墖鏈鍙婃帴鍙f妧鏈80c51
    绛旓細1銆鍗曠墖鏈鐨40涓紩鑴氬ぇ鑷村彲鍒嗕负4绫伙細鐢垫簮銆佹椂閽熴佹帶鍒跺拰I/O寮曡剼銆2銆佲拡 鐢垫簮:鈶 VCC - 鑺墖鐢垫簮锛屾帴+5V锛涒懙 VSS - 鎺ュ湴绔紱鈷 鏃堕挓:XTALXTAL2 - 鏅朵綋鎸崱鐢佃矾鍙嶇浉杈撳叆绔拰杈撳嚭绔3銆佲拪 鎺у埗绾:鎺у埗绾垮叡鏈4鏍癸紝鈶 ALE/PROG:鍦板潃閿佸瓨鍏佽/鐗囧唴EPROM缂栫▼鑴夊啿 鈶 ALE鍔熻兘锛氱敤鏉ラ攣瀛楶0鍙i佸嚭...
  • 80C51鍗曠墖鏈鎬庝箞鐢ㄦ寜閿夋嫨涓や釜涓嶅悓鐨勭▼搴?
    绛旓細1. 棣栧厛锛屾偍闇瑕佽繛鎺ヤ竴涓寜閿埌80C51鍗曠墖鏈鐨勮緭鍏ュ紩鑴氫笂銆傚亣璁炬寜閿繛鎺ュ埌P1鍙g殑鏌愪釜寮曡剼锛堜緥濡侾1.0锛夈2. 璁剧疆P1鍙g殑寮曡剼涓鸿緭鍏ユā寮忥紝浠ユ帴鏀舵寜閿殑鐘舵併傛偍鍙互浣跨敤P1鍙g殑瀵勫瓨鍣紙渚嬪P1CON锛夋潵璁剧疆寮曡剼鐨勫伐浣滄ā寮忋3. 鍦ㄤ富绋嬪簭涓紝浣跨敤涓涓惊鐜潵璇诲彇鎸夐敭鐨勭姸鎬併傛偍鍙互浣跨敤P1鍙g殑瀵勫瓨鍣紙渚嬪P1锛...
  • 姹80C51鍗曠墖鏈鍋氱殑鐢靛瓙閽,瑕佸師鐞嗗浘鍜岀▼搴忓摝,鎬ョ敤
    绛旓細姹80C51鍗曠墖鏈鍋氱殑鐢靛瓙閽,瑕佸師鐞嗗浘鍜岀▼搴忓摝,鎬ョ敤 闅忎究绠鍗閮借,涓嶈繃鎴戝凡缁忓湪缃戜笂鎵惧埌浜嗐傚彧鏄兂鍙綔涓氳屽凡銆傝绋嬪簭鎴戦殢渚挎壘閮戒竴鎵撴妸,鍙槸瑕佷釜绠鍗曠殑鐢靛瓙閽熷鍔犲師鐞嗗浘,瑕丳roteus鍋氱殑... 闅忎究绠鍗曢兘琛,涓嶈繃鎴戝凡缁忓湪缃戜笂鎵惧埌浜嗐傚彧鏄兂鍙綔涓氳屽凡銆傝绋嬪簭鎴戦殢渚挎壘閮戒竴鎵撴妸,鍙槸瑕佷釜绠鍗曠殑鐢靛瓙閽熷鍔犲師鐞嗗浘,瑕丳...
  • 80C51鍗曠墖鏈寮曡剼鍥惧強寮曡剼鍔熻兘浠嬬粛
    绛旓細80C51鍗曠墖鏈鏈40涓紩鑴氬ぇ鑷村彲鍒嗕负4绫伙細鐢垫簮銆佹椂閽熴佹帶鍒跺拰I/O寮曡剼銆1銆佺數婧:锛1锛塚CC - 鑺墖鐢垫簮锛屾帴+5V锛涳紙2锛 VSS - 鎺ュ湴绔紱2銆佹椂閽:XTAL1銆乆TAL2 - 鏅朵綋鎸崱鐢佃矾鍙嶇浉杈撳叆绔拰杈撳嚭绔3銆佹帶鍒剁嚎:鎺у埗绾垮叡鏈4鏍癸紝锛1锛堿LE/PROG:鍦板潃閿佸瓨鍏佽/鐗囧唴EPROM缂栫▼鑴夊啿銆侫LE鍔熻兘锛氱敤鏉ラ攣瀛楶0鍙i...
  • C51鍗曠墖鏈绗旇(80C51鐨勪覆琛屽彛)
    绛旓細80C51鐨勪覆琛屽彛鏍稿績缁勪欢鍖呮嫭鍙戦佺紦鍐插瘎瀛樺櫒SBUF銆佷覆琛屾帶鍒跺瘎瀛樺櫒SCON锛屼互鍙婃帴鏀剁紦鍐插瘎瀛樺櫒銆傚伐浣滄柟寮忛夋嫨鐢盨M0鍜孲M1浣嶅喅瀹氾紝鍙夋嫨鏍囧噯8浣嶄紶杈擄紙鏂瑰紡0锛夋垨鎵╁睍9浣嶄紶杈擄紙鏂瑰紡2鍜3锛夈傚伐浣滄柟寮1鍒欐敮鎸10浣嶆暟鎹抚锛屽寘鍚捣濮嬩綅鍜屽仠姝綅锛岄傜敤浜庢洿澶嶆潅鐨勬暟鎹紶杈撳満鏅傚彂閫佷笌鎺ユ敹杩囩▼閬靛惊涓ヨ皑鐨勬椂搴忥紝浠庡彂閫佹渶浣庝綅...
  • 80C51鍗曠墖鏈绠浠?
    绛旓細80C51鍗曠墖鏈灞炰簬MCS-51绯诲垪鍗曠墖鏈猴紝鐢盜ntel鍏徃寮鍙戙傛杩帮細1銆80C51鏈変袱涓16浣嶅畾鏃惰鏁板櫒锛屼袱涓涓柇锛屼袱涓畾鏃惰鏁颁腑鏂紝鍙婁竴涓覆琛屼腑鏂紝骞舵湁4涓8浣嶅苟琛岃緭鍏ュ彛銆2銆80C51鍐呴儴鏈夋椂閽熺數璺紝浣嗛渶瑕佺煶鑻辨櫠浣撳拰寰皟鐢靛澶栨帴锛岀敱浜80C51鐨勭郴缁熸ц兘婊¤冻绯荤粺鏁版嵁閲囬泦鍙婃椂闂寸簿搴︾殑瑕佹眰锛岃屼笖浜у搧浜ч噺涓板瘜鏉ユ簮骞匡紝...
  • 80c51鍗曠墖鏈LED寰绠鍗鐨勪竴涓紪绋
    绛旓細浠ヤ笅绋嬪簭锛岀粡杩囩紪璇戙佷豢鐪熼氳繃锛屽彲浠ユ弧瓒宠姹 ;--- ORG 0000H MOV R2, #0 LOOP:JB P3.3, LOOP INC R2 CJNE R2, #5, LOOP MOV R2, #0 CPL P1.0 SJMP LOOP ;瀹
  • 80C51鍗曠墖鏈虹畝鍗闂
    绛旓細涓よ呮槸涓嶅悓鐨勶紝鍓嶈呮槸璇诲紩鑴氾紝鍚庤呮槸璇诲瘎瀛樺櫒銆侻OV A, P1锛屾槸杈撳叆P1鍒癆锛屾槸璇籔1寮曡剼澶栨帴鐨勮澶囩殑淇℃伅銆侫NL P1锛#55H锛屾槸鎶奝1瀵勫瓨鍣ㄧ殑鍐呭鍙栨潵锛屽啀涓#55H锛屽啀杈撳嚭鍒癙1銆傝繖鏉℃寚浠ゅ氨鏄墍璋撶殑鈥滆鏀瑰啓鈥濇寚浠ゃ傚瘎瀛樺櫒鍐呭锛屾槸鎸鍗曠墖鏈涓婃杈撳嚭鐨勫唴瀹广
  • 鍗曠墖鏈80c51,鏂版墜,姹傝瑙d竴涓绠鍗鐨勭▼搴
    绛旓細锛3锛塵ain涓殑lcall delay鏄笉鏄帶鍒剁▼搴弇ain杩愯鍒發oop鐨勯棿闅旓紝鑰宭oop涓殑lcall delay鏄帶鍒剁伅浜殑闂撮殧锛焞calldelay鏄竴娈靛浐瀹氱殑鏃堕棿锛堟病寮涓柇锛夛紝鍦ㄥ摢閲屾帀鐢ㄩ兘鏄竴鏍风殑鏃堕棿锛屾墍浠ユ暣浜嗗ソ鍑犱釜銆俵oop涓槸鎺у埗姣忔鍒囨崲鐏姸鎬佺殑鏃堕棿銆傦紙4锛夊鏋滄垜瑕佹帶鍒剁伅浜殑闂撮殧锛屾槸涓嶆槸鏈変袱绉嶆柟娉曪紝涓鏄敼鍙榣call ...
  • 扩展阅读:plc零基础自学入门 ... 5种常用的单片机型号 ... 89c51高清引脚图 ... 单片机入门教程视频 ... 电脑初学者入门教程 ... 单片机设计100例 ... 80c51引脚图 ... plc编程入门基础知识 ... 基于单片机的简单项目 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网