华润微8051系列通用MCU教程(1)---CS88F003之GPIO使用

一:华润微电子简介:

华润微电子有限公司是华润集团旗下负责微电子业务投资、发展和经营管理的高科技企业。目前微电子下设四大事业群分别是集成电路事业群(ICBG)、功率器件事业群(PDBG)、代工事业群(FBG)、封测事业群(ATBG),其中ICBG全面负责功率IC、智能传感器、智能控制、系统应用及方案设计与开发的业务单元。

二:CS88F003基本资源:

cs88f003是基于8051内核设计的一款通用型MCU,可适用于家电产品、马达控制等应用场景,拥有256字节IRAM和1K字节XRAM,最高工作频率为8MHZ,通信接口包含SPI,IIC,UART个一路,8路12位ADC采样…
由于公司前段时间需要用到003,但是苦于网上资料匮乏并且工作后很少使用8位单片机,所以在前期开发阶段耗时较长,故现在将项目开发阶段时用到的一些资源模块以文档的形式进行整理记录,便于各位有需要使用的道友参考上手!

三:GPIO模块:

CS88F003 最多可提供 18 个双向可编程的普通 I/O。其中输出状态有上拉输出、下拉输出、开漏输出;输入状态有上拉输入、下拉输入、SMT输入;IO口触发外部中断包括低电平、下降沿、上升沿、双沿触发。

3.1:使用GPIO端口作为普通IO输出;

*在测试中发现,如果设置输出模式后,再设置引脚内部上拉无效果,故个人建议输出模式时采用外部上下拉!

		/*1:第一步设置对应引脚的输出使能寄存器,使能输出,例如使能pt05输出*/
		PT0_OE |= 0x10;
		/*2:第二步就可以直接操作位输出寄存器输出高低电平,例如pt05输出高电平*/
		PT0_DOUT |= 0x10;
		SysClk_Delay(100);
		/*pt05输出低电平*/
		PT0_DOUT &= ~(0x10);
		SysClk_Delay(100);
		//结果:最终用逻辑分析仪或示波器可以抓取到pt05输出一个脉冲信号。

3.2:使用GPIO端口作为浮空输入模式;

		/*1:第一步使能对应引脚的输入使能寄存器,使能输入,例如使能pt03为输入功能*/
		PT0_IE |= 0x08; 
		/*2:第二步即可直接读取端口数据寄存器,从而获取对应引脚的电平状态,例如读取pt0端口值*/
		input_data = PT0_DIN; 
		//结果:可以通过位操作获取pt03的引脚电平状态。

3.3:GPIO外部中断模式;

		/**************************************main.c*************************************/
		/*1:第一步需要配置全局中断使能寄存器,使能全局中断,例如使能全局中断和int0*/
		IE |= 0x81;       
		/*2:第二步配置中断入口选择寄存器,INT0和INT1可选,例如选择GPIO中断从INT0输出*/
		IRQ_SEL0 |= 0x01; 
		/*3:第三步配置相应引脚为输入模式,例如配置pt03为输入模式*/
		PT0_IE |= 0x08;  
		/*4:第四步配置引脚中断触发模式选择寄存器,例如配置pt03为双沿触发*/
		PIN_IRQMOD |= (0x03<<4);  
		/*5:第五步配置引脚中断使能位,使能外部中断,例如使能pt03外部中断*/
		PT0_IRQEN |= 0x08;      
		/**************************************interrupt.c*************************************/
		void IRQ_0() interrupt 0 
		{
			/*判断引脚是否发生中断*/
			if(PT0_IRQSTATE & 0x08)  //判断pt03是否发生外部中断
			{
				/*清除外部中断标志寄存器*/
				PT0_IRQCLR |= 0x08;
				//用户添加代码......
			}
		}

*此文章为个人学习记录,仅供参考,一切还以原厂文档和官方demo为准!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值