单片机P2口置高低电平,程序怎么写

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:15:05
我用的是AT89S52,现在P2口外接8个LED,LED正极接电源,负极通过一个电阻接到P2口,我现在想写一个程序,让8个LED隔一个亮一个,原来我的程序是这样写
mov p2.0 #00h
mov p2.1 #ffh
mov p2.2 #00h
mov p2.3 #ffh
mov p2.4 #00h
mov p2.5 #ffh
mov p2.6 #00h
mov p2.7 #ffh
生成HEX文件时报错了,好像是太简单了,HOHO

mov p2.0 #00h
mov p2.1 #ffh
mov p2.2 #00h
mov p2.3 #ffh
mov p2.4 #00h
mov p2.5 #ffh
mov p2.6 #00h
mov p2.7 #ffh
这的语法就错误了,
单个引脚应该是这样
SETB P2.0 意思是P2口的这1个引脚设置为高电平
CLR P2.1 意思是P2口的这2个引脚设置为低电平
MOV P2,#55H就是设置P2口的8个引脚一高一低或是MOV P2,#0AAH
MOV P2.1,#FFH这个语法就不错
第一FFH为应该是#0FFH才对
第二P2.1只是P2口中的一引脚不能用MOV P2.1,#FFH这个指令来写
P2是一个寄存器,P2.1只是P2口中一个位,你用的指令来写当然软件不能编译了
多看看书吧!

当然错了,P2.0、P2.1……P2.7等都是代表一个位,要么赋值1要么赋值0,你赋值的是一个字节。
应该把所有P2后面的“.”和0到7的数字都去掉,但程序不会然LED各一个亮一个,而是先亮一下,然后灭了。并且因为运行速度很快,你根本看不出来LED灯亮和灭。
如果想让八个灯隔一个亮一个,写这句话就行了:
MOV P2,#55H
这是让P2.0灭,P2.1亮……依次类推
MOV P2,#AAH
这是让P2.0亮,P2.1灭……依次类推
如果你要做得像街上那些广告灯那样八个小灯循环亮灭,就要把上面两句一起写进去,并且中间要加延时程序,具体根据你单片机的晶振决定!

clr p2.0
setb p2.1
clr p2.2
setb p2.3
clr p2.4
setb p2.5
clr p2.6
setb p2.7

教案上有例题自己看去