大家好
	
我的功放进程贴开始了,我会记录我的每一步动向,谢谢大家的分享。
	
 
开始我的程序设计,一点一滴记录,欢迎大家指正。
	
	/*************	功能说明	**************
本文件为STC15xxx系列的端口初始化程序,用户几乎可以不修改这个程序.
******************************************/
#include	"GPIO.h"
//========================================================================
// 函数: u8	GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
// 描述: 初始化IO口.
// 参数: GPIOx: 结构参数,请参考timer.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8	GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
{
if(GPIO > GPIO_P5)	 return 1;	//空操作
if(GPIOx->Mode > GPIO_OUT_PP)	return 2;	//错误
if(GPIO == GPIO_P0)
{
if(GPIOx->Mode == GPIO_PullUp)	 P0M1 &= ~GPIOx->Pin,	P0M0 &= ~GPIOx->Pin;	 //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ)	 P0M1 |=  GPIOx->Pin,	P0M0 &= ~GPIOx->Pin;	 //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD)	 P0M1 |=  GPIOx->Pin,	P0M0 |=  GPIOx->Pin;	 //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP)	 P0M1 &= ~GPIOx->Pin,	P0M0 |=  GPIOx->Pin;	 //推挽输出
}
if(GPIO == GPIO_P1)
{
if(GPIOx->Mode == GPIO_PullUp)	 P1M1 &= ~GPIOx->Pin,	P1M0 &= ~GPIOx->Pin;	 //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ)	 P1M1 |=  GPIOx->Pin,	P1M0 &= ~GPIOx->Pin;	 //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD)	 P1M1 |=  GPIOx->Pin,	P1M0 |=  GPIOx->Pin;	 //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP)	 P1M1 &= ~GPIOx->Pin,	P1M0 |=  GPIOx->Pin;	 //推挽输出
}
if(GPIO == GPIO_P2)
{
if(GPIOx->Mode == GPIO_PullUp)	 P2M1 &= ~GPIOx->Pin,	P2M0 &= ~GPIOx->Pin;	 //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ)	 P2M1 |=  GPIOx->Pin,	P2M0 &= ~GPIOx->Pin;	 //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD)	 P2M1 |=  GPIOx->Pin,	P2M0 |=  GPIOx->Pin;	 //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP)	 P2M1 &= ~GPIOx->Pin,	P2M0 |=  GPIOx->Pin;	 //推挽输出
}
if(GPIO == GPIO_P3)
{
if(GPIOx->Mode == GPIO_PullUp)	 P3M1 &= ~GPIOx->Pin,	P3M0 &= ~GPIOx->Pin;	 //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ)	 P3M1 |=  GPIOx->Pin,	P3M0 &= ~GPIOx->Pin;	 //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD)	 P3M1 |=  GPIOx->Pin,	P3M0 |=  GPIOx->Pin;	 //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP)	 P3M1 &= ~GPIOx->Pin,	P3M0 |=  GPIOx->Pin;	 //推挽输出
}
if(GPIO == GPIO_P4)
{
if(GPIOx->Mode == GPIO_PullUp)	 P4M1 &= ~GPIOx->Pin,	P4M0 &= ~GPIOx->Pin;	 //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ)	 P4M1 |=  GPIOx->Pin,	P4M0 &= ~GPIOx->Pin;	 //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD)	 P4M1 |=  GPIOx->Pin,	P4M0 |=  GPIOx->Pin;	 //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP)	 P4M1 &= ~GPIOx->Pin,	P4M0 |=  GPIOx->Pin;	 //推挽输出
}
if(GPIO == GPIO_P5)
{
if(GPIOx->Mode == GPIO_PullUp)	 P5M1 &= ~GPIOx->Pin,	P5M0 &= ~GPIOx->Pin;	 //上拉准双向口
if(GPIOx->Mode == GPIO_HighZ)	 P5M1 |=  GPIOx->Pin,	P5M0 &= ~GPIOx->Pin;	 //浮空输入
if(GPIOx->Mode == GPIO_OUT_OD)	 P5M1 |=  GPIOx->Pin,	P5M0 |=  GPIOx->Pin;	 //开漏输出
if(GPIOx->Mode == GPIO_OUT_PP)	 P5M1 &= ~GPIOx->Pin,	P5M0 |=  GPIOx->Pin;	 //推挽输出
}
return 0;	//成功
时钟控制
	
	/*************	功能说明	**************
本文件为STC15xxx系列的定时器初始化和中断程序,用户可以在这个文件中修改自己需要的中断程序.
******************************************/
#include	"timer.h"
/********************* Timer0中断函数************************/
//void timer0_int (void) interrupt TIMER0_VECTOR
//{
//}
/********************* Timer1中断函数************************/
void timer1_int (void) interrupt TIMER1_VECTOR
{
}
/********************* Timer2中断函数************************/
void timer2_int (void) interrupt TIMER2_VECTOR
{
P10 = ~P10;
}
//========================================================================
// 函数: u8	Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
// 描述: 定时器初始化程序.
// 参数: TIMx: 结构参数,请参考timer.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8	Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
{
if(TIM > Timer2)	return 1;	//空操作
if(TIM == Timer0)
{
TR0 = 0;		//停止计数
if(TIMx->TIM_Interrupt == ENABLE)		ET0 = 1;	//允许中断
else									ET0 = 0;	//禁止中断
if(TIMx->TIM_Polity == PolityHigh)		PT0 = 1;	//高优先级中断
else									PT0 = 0;	//低优先级中断
if(TIMx->TIM_Mode >  TIM_16BitAutoReloadNoMask)	return 2;	//错误
TMOD = (TMOD & ~0x03) | TIMx->TIM_Mode;	//工作模式,0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装, 3: 16位自动重装, 不可屏蔽中断
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T)	AUXR &= ~0x80;	//12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T)		AUXR |=  0x80;	//1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext)	TMOD |=  0x04;	//对外计数或分频
else										TMOD &= ~0x04;	//定时
if(TIMx->TIM_ClkOut == ENABLE)	INT_CLKO |=  0x01;	//输出时钟
else							INT_CLKO &= ~0x01;	//不输出时钟
TH0 = (u8)(TIMx->TIM_Value >> 8);
TL0 = (u8)TIMx->TIM_Value;
if(TIMx->TIM_Run == ENABLE)	TR0 = 1;	//开始运行
return	0;		//成功
}
if(TIM == Timer1)
{
TR1 = 0;		//停止计数
if(TIMx->TIM_Interrupt == ENABLE)		ET1 = 1;	//允许中断
else									ET1 = 0;	//禁止中断
if(TIMx->TIM_Polity == PolityHigh)		PT1 = 1;	//高优先级中断
else									PT1 = 0;	//低优先级中断
if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask)	return 2;	//错误
TMOD = (TMOD & ~0x30) | TIMx->TIM_Mode;	//工作模式,0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T)	AUXR &= ~0x40;	//12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T)		AUXR |=  0x40;	//1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext)	TMOD |=  0x40;	//对外计数或分频
else										TMOD &= ~0x40;	//定时
if(TIMx->TIM_ClkOut == ENABLE)	INT_CLKO |=  0x02;	//输出时钟
else							INT_CLKO &= ~0x02;	//不输出时钟
TH1 = (u8)(TIMx->TIM_Value >> 8);
TL1 = (u8)TIMx->TIM_Value;
if(TIMx->TIM_Run == ENABLE)	TR1 = 1;	//开始运行
return	0;		//成功
}
if(TIM == Timer2)		//Timer2,固定为16位自动重装, 中断无优先级
{
AUXR &= ~(1<<4);	//停止计数
if(TIMx->TIM_Interrupt == ENABLE)			IE2  |=  (1<<2);	//允许中断
else										IE2  &= ~(1<<2);	//禁止中断
if(TIMx->TIM_ClkSource >  TIM_CLOCK_Ext)	return 2;
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T)	AUXR &= ~(1<<2);	//12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T)		AUXR |=  (1<<2);	//1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext)	AUXR |=  (1<<3);	//对外计数或分频
else										AUXR &= ~(1<<3);	//定时
if(TIMx->TIM_ClkOut == ENABLE)	INT_CLKO |=  0x04;	//输出时钟
else							INT_CLKO &= ~0x04;	//不输出时钟
TH2 = (u8)(TIMx->TIM_Value >> 8);
TL2 = (u8)TIMx->TIM_Value;
if(TIMx->TIM_Run == ENABLE)	AUXR |=  (1<<4);	//开始运行
return	0;		//成功
}
return 2;	//错误
}
	
		
	
	
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |