以下是一个简单的51单片机程序,通过按下按键可以实现4种不同状态的灯亮灭,包括正闪、反闪、多种间隔闪。程序中使用了定时器来实现闪烁功能。
程序中使用了P1.0到P1.3作为控制灯的引脚,P3.2作为按键的引脚。每当按下按键时,通过判断状态值来切换不同的灯亮灭模式。定时器中断函数用来实现灯的闪烁,可根据需求自行调整闪烁频率。
编程不易,忘采纳
D2位OV是判断溢出的标志。
在单片机中状态寄存器PSW是一个用了比较多的寄存器,除了D1位空着外,其它的7位都要使用,其中D7位Cy,是进(借)位,当做加法或减法时,进位标志和借位标志都是由它来表示.
当位和位之间相互传送时也不能少了它,必须要经它中转.D6位Ac位是辅助进位标志,当做加法或减法时由第四位向第五位进位或借位时,它会被置1.它也用于十进制调整(DA A).
D5位是用户标志位,当程序因某种原因"跑偏"后,用户可以用它来标志程序该从哪儿开始执行.不重复已经执行过的指令.
D4、D3位合在一块儿,指明工作寄存器的组别,这主要用于比较复杂一些的程序,R0组寄存器不够用的情况下用到R1、R2、R3组的寄存器时要用到这二位。
怎么判断正负吧。就是C位。考虑溢出-128-1单片机的计算方法为先把1和128用补码表示为11111111b和10000000b。相加得,01111111b=127正数C=0溢出0V=1,-128<1127-(-1)表示为01111111b加00000001b=10000000b负数C=1溢出0V=1,127>-1我也是刚看到。原来OV就是为有符号设计的当数寄存器值小于-127或大于128时候置位。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)