1、直接调用库函数。
2、下面是函数的配置,从中可以看出,i=0时,端口25.16.4所对应的灯亮,i=1时,端口27.28.5所对应的灯亮,在for循环中,两组灯交替闪烁。
3、通过自定义宏进行 *** 作,来实现。
4、自定义的宏如下,将灯的端口及开关,通过自定义宏的方式,可以在程序中进行直接 *** 作。
5、直接控制端口所对应的寄存器。
6、直接 *** 作寄存器,需要定义端口对应的寄存器。
展开全部首先会按键扫描,再会数码管或液晶屏显示,基本上可以了
程序
流程:
扫描按键(最多5次,最大65536,简易计算器吗)获得一个数,再扫描按键获得加减乘除符号
扫描按键获得另一个数
扫描按键获得“=”,显示计算结果
由于程序比较长,且与硬件有关,因此只贴出主程序:
void
main()
{
while(1)
{
c=1
while(c<6)//输入第1个5
位数
{
keyval=keyscan()
if(keyval<10)
{
switch(c)
{
case
1:b1=keyval
break
case
2:b2=keyval
break
case
3:b3=keyval
break
case
4:b4=keyval
break
case
5:b5=keyval
break
}
c++
}
display1(b1,b2,b3,b4,b5)
}
while(c==6)
//输入计算符号
{
keyval=keyscan()
if((keyval>=10)&&(keyval<14))
//10-13代表加减乘除
4种符号
{
d=keyval
}
c=1
display3(d)
}
while(c<6)
//输入第2个5
位数
{
keyval=keyscan()
if(keyval<10)
{
switch(c)
{
case
1:d1=keyval
break
case
2:d2=keyval
break
case
3:d3=keyval
break
case
4:d4=keyval
break//
除
case
5:d5=keyval
break
}
c++
}
display2(d1,d2,d3,d4,d5)
}
bb=
b1*10000+b2*1000+b3*100+b4*10+b5//5个按键数值合成一个数
dd=d1*10000+d1*1000+d3*100+d4*10+d5
//另外5个按键数值也合成一个数
while(keyval!=14)
//等待按下"="
{
keyval=keyscan()
}
Delay1ms(10)
switch(d)
{
case
10:ee=bb+dd
break//+
case
11:
flag1=1//结果是负数的标志,先假定是负数
if(bb>=dd)
{
ee=bb-dd
//结果不是负数
flag1=0
}
else
ee=dd-bb
//减数和被减数交换
break
case
12:ee=bb*dd
break//*可能会溢出
case
13:ee=bb/dd
//除法小数部分会丢失,保留2位
ff=bb%dd
fd1=ff*10/dd
fd2=ff*100/dd%10
break
}
f10=ee/1000000000%10
f9=ee/100000000%10
f8=ee/10000000%10
f7=ee/1000000%10
f6=ee/100000%10
f5=ee/10000%10
f4=ee/1000%10
f3=ee/100%10
f2=ee/10%10
f1=ee%10
display4(f10,f9,f8,f7,f6,f4,f4,f3,f2,f1,fd1,fd2)
while(keyval!=15)
{
keyval=keyscan()
}
b1=0b2=0b3=0b4=0b5=0
d1=0d2=0d3=0d4=0d5=0
bb=0dd=0ee=0
init2()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)