ARM程序模块.docx

上传人:b****5 文档编号:6995198 上传时间:2023-01-15 格式:DOCX 页数:8 大小:15.39KB
下载 相关 举报
ARM程序模块.docx_第1页
第1页 / 共8页
ARM程序模块.docx_第2页
第2页 / 共8页
ARM程序模块.docx_第3页
第3页 / 共8页
ARM程序模块.docx_第4页
第4页 / 共8页
ARM程序模块.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

ARM程序模块.docx

《ARM程序模块.docx》由会员分享,可在线阅读,更多相关《ARM程序模块.docx(8页珍藏版)》请在冰豆网上搜索。

ARM程序模块.docx

ARM程序模块

/*********************************************************************************

函数名:

spi_init

函数功能:

spi初始化为主机模式

*********************************************************************************/

voidspi_init(void)

{

SPI_SPCR=(0<<3)|

(1<<4)|

(1<<5)|

(0<<6)|

(0<<7);

SPI_SPCCR=0X52;

}

/*******************************************************************************

函数名:

write_data

函数功能:

主机模式发送数据

*********************************************************************************/

voidwrite_data(uint8data)

{

SPI_SPDR=data;

while(0==(SPI_SPSR&0X80));

}

/*********************************************************************************

函数名:

delay

函数功能:

简单延时

*********************************************************************************/

voiddelay(uint32timerdelay_flag)

{

for(;timerdelay_flag>0;timerdelay_flag--);

}

/********************************************************************************************

函数名:

bcdtodata_transition

函数功能:

将调整的断码转换为数据

*******************************************************************************************/

uint32bcdtodata_transition(uint32*bcd)

{

uint32bcd_data;

bcd_data=bcd[5]*100000+

bcd[4]*10000+

bcd[3]*1000+

bcd[2]*100+

bcd[1]*10+

bcd[0]*1;

returnbcd_data;

}

/********************************************************************************************

函数名:

datatobcd_transition

函数功能:

将数据转换为断码

输入参数:

*array_data数组首地址,To_convert_data待转换数据

*******************************************************************************************/

voiddatatobcd_transition(uint32*array_data,uint32To_convert_data)

{

array_data[0]=To_convert_data%10;

array_data[1]=To_convert_data/10%10;

array_data[2]=To_convert_data/100%10;

array_data[3]=To_convert_data/1000%10;

array_data[4]=To_convert_data/10000%10;

array_data[5]=To_convert_data/100000%10;

}

/*********************************************************************************

函数名:

shizhong

函数功能:

时钟的进位

*********************************************************************************/

voidshizhong()

{

if(timer[0]==10)

{

timer[0]=0;

timer[1]++;

if(timer[1]==6)

{

timer[1]=0;

timer[3]++;

if(timer[3]==10)

{

timer[3]=0;

timer[4]++;

if(timer[4]==6)

{

timer[4]=0;

timer[6]++;

if(timer[6]==4)

{

timer[6]=0;

timer[7]++;

if(timer[7]==3)

{

timer[7]=0;

}

}

}

}

}

}

}

/*********************************************************************************

函数名:

data_play

函数功能:

将数据显示在数码管上,并且可以修改

*********************************************************************************/

voiddata_play(volatileuint32*data,uint32scan_flag,uint32key_flag)

{

uint32move_flag=0;/*移动标志*/

uint32flicker_flag=0;/*闪烁标志*/

uint32revamp_flag=0;/*修改标志*/

if(key_flag==1)

{

revamp_flag=1;/*修改标志置位*/

}

if(revamp_flag==1)

{

flicker_flag++;/*闪烁标志自增*/

if(flicker_flag==10000)

{

flicker_flag=0;

}

if(key_flag==2)

{

move_flag++;

if(data[move_flag]>=10)

{move_flag++;}

if(move_flag==8)

{move_flag=0;}

}

if(key_flag==3)

{

data[move_flag]++;

if(data[move_flag]==10)

{data[move_flag]=0;}

}

if(key_flag==4)

{

move_flag=0;/*移动标志清零*/

revamp_flag=0;/*修改标志清零*/

}

if(scan_flag==move_flag)

{

IO0CLR=0X01;

if(flicker_flag<5000)

write_data(digitable[data[move_flag]]);

if(flicker_flag>5000)

write_data(0x00);

write_data(selectable[move_flag]);

IO0SET=0X01;

}

else

{

IO0CLR=0X01;

write_data(digitable[data[move_flag]]);

write_data(selectable[move_flag]);

IO0SET=0X01;

}

}

else

{

IO0CLR=0X01;

write_data(digitable[data[move_flag]]);

write_data(selectable[move_flag]);

IO0SET=0X01;

}

}

/*********************************************************************************

函数名:

key_return

函数功能:

读取按键的值并返回

*********************************************************************************/

uint32key_return(uint32scan_flag)

{

uint32key_resurt=12;

if(0==(IO0PIN&0x02))

{

delay(500);

if(0==(IO0PIN&0x02))

{

key_resurt=scan_flag;

while(!

(IO0PIN&0X02));

}

}

returnkey_resurt;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1