实验一并行输入输出口的使用
一、实验目的:学会设计proteus7仿真电路,学习P1口的使用方法和延时子程序的编写用KeiluVisio
3编程实现发光二极管的流水点亮。二、实验原理:P1口为8位准双向IO口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1)。P1口作为输出,接8个发光二极管D1D8经限流电阻分别接至8个引脚。本实验仿真电路图、流程图如下:
U1
3938373635343332
P00AD0P01AD1P02AD2P03AD3P04AD4P05AD5P06AD6P07AD7
2122232425262728
P20A8P21A9P22A10P23A11P24A12P25A13P26A14P27A15
1011121314151617
P30RXDP31TXDP32INT0P33INT1P34T0P35T1P36WRP37RD
AT89C51
XTAL119XTAL218
RST9
PSENALEEA
293031
P10P11P12P13P14P15P16P17
12345678
R1
470R
R2
470R
R3
470R
R4
470R
R5
470R
R6
470R
R7
470R
R8
470R
D1
LEDRED
D2
LEDRED
D3
LEDRED
D4
LEDRED
D5
LEDRED
D6
LEDRED
D7
LEDRED
D8
LEDRED
开始P1口初始化点亮D1发光二极管
延时发光二极管移到下一位
循环
1
f三、实验代码:
i
cludereg51hi
cludei
tri
sh移位库函数包含于此头文件中voiddelayu
sig
edi
td定义延时子函数
whiled0
voidmai
u
sig
edcharisel
while1
sel0xfe
fori0i8i
P1sel
显示变量赋给P1口
delay50000延时
sel_crol_sel1改变显示变量
四、实验结论:用while语句实现发光二极管循环流水点亮,从上到下一次点亮。
实验二C51分支程序设计
一、实验目的:学习多分支选择结构和switch语句,了解循环的嵌套。二、实验原理:dowhile循环先执行后判断是否循环,switch括号中的表达式的值与某case后的常量表达式的值相同时,就执行它后面的语句,遇到break语句则退出switch语句。本实验仿真电路图、流程图如下:
SW3
SWSPST
SW2
SWSPST
U1
87654321
P17P16P15P14P13P12P11P10
313029
EAALEPSEN
9RST
18XTAL219XTAL1
AT89C51
P37RDP36WR
P35T1P34T0P33INT1P32INT0P31TXDP30RXD
1716151413121110
P27A15P26A14P25A13P24A12P23A11P22A10
P21A9P20A8
2827262524232221
P07AD7P06AD6P05AD5P04AD4P03AD3P02AD2P01AD1P00AD0
3233343536373839
(仿真电路图)
D4D3
LEDRED
D2
LEDRED
D1
LEDRED
LEDRED
R4
470R
R3
470R
R2
470R
R1
470R
2
f开始
P1口初始化
将P1口赋给a并屏蔽高6位
a散转地址
‘0’循环子句‘1’循环子句‘2’循环子句‘3’循环子句
YWhile是否为真
N结束
(流程图)三、实验代码:i
cludereg51hvoidmai
chara
doP10xff
aP1aa0x03switchacase0P20x0ebreak
case1P20x0dbreakcase2P20x0bbreakcase3P20x07breakr