16位单片机实验程序讲解Word下载.docx
《16位单片机实验程序讲解Word下载.docx》由会员分享,可在线阅读,更多相关《16位单片机实验程序讲解Word下载.docx(71页珍藏版)》请在冰豆网上搜索。
//文件来源:
《61板实验教程》"
实验一发光二极管单向循环点亮“
//硬件连接:
IOA低8位接至SEG接口控制LED的导通
//IOB6连至DIG7通过ULN2003A控制8个LED的共阴极电平状态。
//IDE环境:
SUNPLUSu'
nSPTMIDE1.8.0
//涉及的库:
//组成文件:
//main.c
//日期:
2004/8/16
#defineP_IOA_Data(volatileunsignedint*)0x7000
#defineP_IOA_Buffer(volatileunsignedint*)0x7001
#defineP_IOA_Dir(volatileunsignedint*)0x7002
#defineP_IOA_Attrib(volatileunsignedint*)0x7003
#defineP_IOB_Data(volatileunsignedint*)0x7005
#defineP_IOB_Buffer(volatileunsignedint*)0x7006
#defineP_IOB_Dir(volatileunsignedint*)0x7007
#defineP_IOB_Attrib(volatileunsignedint*)0x7008
#defineP_Watchdog_Clear(volatileunsignedint*)0x7012
//=============================================================
//函数名称:
Delay()
//日期:
实现延时
//语法格式:
voidDelay(void);
//入口参数:
无
//出口参数:
//注意事项:
仅为用户模型
//=============================================================
voidDelay()
{//延时子程序
unsignedinti;
for(i=0;
i<
32768;
i++){
*P_Watchdog_Clear=0x0001;
//清WatchDog
}
}
intmain()
发光二极管单向循环点亮
voidmain(void);
//入口参数:
intmain()
{
intLedControl=0x0001;
*P_IOA_Dir=0x00ff;
//设置A口低8位为同向低输出
*P_IOA_Attrib=0x00ff;
*P_IOA_Data=0x0000;
*P_IOB_Dir=0x0040;
//设置B6口为高电平输出,保证LED共阴极接地
*P_IOB_Attrib=0x0040;
*P_IOB_Data=0x0040;
while
(1)
{
*P_IOA_Data=LedControl;
//送数据到A口
LedControl=LedControl<
<
1;
if(LedControl>
0x00FF)
LedControl=0x0001;
Delay();
}
//main.c结束
2、用C实现发光二极管双向循环点亮
led2_C.scs
用C实现发光二极管双向循环点亮
实验二发光二极管双向循环点亮“
voiddelay();
发光二极管双向循环点亮
intLedDir=0x0000;
if(LedDir==1)//反向右移循环
{
LedControl=LedControl>
>
if(LedControl==0x0000)//反向循环完毕
LedDir=0x0000;
LedControl=0x0001;
}
else
{//正向左移循环
if(LedControl==0x0100)//正向循环完毕
LedDir=0x0001;
}
//=============================================================
3、用C实现按键点亮发光二极管
led3_C.scs
用C实现按键点亮发光二极管
实验三按键点亮发光二极管“
//IOA高8位连接到LED键盘模组的1*8KEY接口管脚上,读取相应按键值
//1*8key中ROW1与DGND相连,IOB6连至DIG7通过ULN2003A控制8个LED的共阴极电平状态
externunsignedGetKey(void);
按键点亮发光二极管
unsignedKey=0x0000;
//设置A口低8位为同向低输出,高8位为同向上拉输入
*P_IOA_Data=0xff00;
Key=GetKey();
//取键值
Key=Key>
8;
//取LED显示初值
*P_IOA_Data=Key;
4、用C实现键控发光二极管循环点亮
led4_C.scs
用C实现键控发光二极管循环点亮
实验四键控发光二极管循环点亮“
键控发光二极管循环点亮
intLedControl=0x0000;
//设置A口高8位为同向高输入
*P_IOA_Data=0xFF00;
while
(1)
{
if(Key!
=0)//重新按键
LedControl=Key;
*P_IOA_Data=LedControl;
//LED循环显示
if(LedControl==0x100)//保证输出数据在有效范围以内
5、控制所有数码管循环显示0-9十个数字
//======================================================
//SunnnorthTechnologyCo.Andshallnotbedistributed,reproduced,
//ordisclosedinwholeinpartwithou