芯圣HC18M003是上海芯圣电子股份有限公司生产的一款8位单片机,是一颗采用高速低功耗 CMOS 工艺设计开发的增强型 8 位 ADC 单片机,内部有4K*16bit MTP 程序存储器,512 *8bit RAM,最多 18 个双向 I/O 口,3 个定时器/计数器,1 组 12 位带死区控制互补 PWM,1 个 UART,1 个 SPI,1 个 IIC,1 个外部中断,PORTB 端口支持电平中断,最多 8通道电容触摸按键检测,最多 11+1 路 12 位 ADC,内置高性能的电源稳压电路,四种系统工作模式(高频、低频、绿色、休眠)和 12 个中断源。
通常入手一个单片机,进行的最简单测试都是点亮LED之类的。这款芯片有自己的操作指令集,不能用51单片机的汇编语言操作。以下做一下简单总结。
一、通用及复用I/O
HC18M002/003 所有 I/O 口均可由软件配置成多种工作类型之一,具体为:输入、输出、上下拉。
HC18M002/003 的 PORTC4 为真开漏口。
HC18M002/003 上电复位后,所有 IO 口都默认为模拟输入。
1、IO口输入输出寄存器 TRISx(x=A、B、C、D)
2、IO口模拟模式控制寄存器 ANSELx(x=A、B、C、D)
3、IO口上拉控制寄存器 WPUx(x=A、B、C、D)
4、PB口上拉控制选择寄存器 OPTION
5、IO 口下拉控制寄存器 WPDx(x=A、B、C、D)
6、IO口数据寄存器 PORTx(x=A、B、C、D)
学习了这些指令,我们就可以做一个简单的小测试程序。
以示例工程为模板,编写以下代码:
《holychip_define.h》
#ifndef __holychip_define__ #define __holychip_define__ #include "hc18m003.h" #endif
《main.c》
#include "holychip_define.h" // 延时毫秒 void delay(unsigned int d) { unsigned int i=250; while (d--) { for (i=0; i< 250; i++) { } } } void main(void) { /*********************************系统初始化*******************************************/ OSCCON = 0x04; //Fosc=32MHz,Fcpu=4MHz(Fosc四分频,2T) /**********************************IO初始化********************************************/ TRISA = 0x01; // PA0设为输出模式 ANSELA = 0x01; // PA0设为数字模式 // WPUA = 0x01; // PA0设为上拉 while(1) { PORTA = 0x01; delay(500); PORTA = 0x00; delay(500); } }
编译这个程序,并下载到芯片中。重新为芯片建立供电(3.3V即可,7脚接GND,9脚接Vcc),在PA0引脚(第10脚)上接上LED和限流电阻到Vcc端。通电后,就可以看到LED周期性地闪烁。
到这里我们就验证了HC18M003芯片GPIO口的最简单操作。