HC89S003F4开发板试用心得之——定时中断实现LED闪烁
本帖最后由 芯圣电子官方QQ 于 2023-7-24 15:38 编辑感谢芯圣和二姨家,之前申请的芯圣开发板已经到手了,按照活动规则,要分享使用心得。水平有限,如有不对的地方还请指教。
先上几个图吧,分别是开发三件套与开发板图特写:https://bbs.21ic.com/forum.php?mod=image&aid=1003128&size=300x300&key=4bc1feaee51af57e&nocache=yes&type=fixnonehttps://bbs.21ic.com/forum.php?mod=image&aid=1003130&size=300x300&key=1217fe6249f848d7&nocache=yes&type=fixnone开始进入正题。一、环境使用keil C51环境,此外要从芯圣官网下载“HC-LINK V3.0.3.0.zip”keil插件以获得相应的器件型号。解压出压缩包后有一个HC-LINK_工具用户手册_Ver1.02,按照里面的步骤执行即可。
二、烧写器驱动同样的,在官网下载HC-LINK驱动,同样的,解压压缩包后,有一份HC工具驱动_用户手册,阅读按照指示安装即可。
以上两个均提示文件过大,附下载地址:http://www.holychip.cn/kfgj/info_14.aspx?itemid=390(从另外一哥们的分享贴挪来的,善哉善哉。。。)
三、建立工程
1、实验目的:P2^2口接led小灯,实现1s闪烁一次的效果。
2、芯片选型:选择;HC89S003F4。https://bbs.21ic.com/forum.php?mod=image&aid=1003132&size=300x300&key=8980189b12c7175f&nocache=yes&type=fixnone3、新建mian.c源文件。附程序代码:
#include "HC89S003F4"
#define TRUE1#define FALSE 0
#define LED_TOGGLE {P2_2 =~ P2_2;}//LED灯取反#define GLOBAL_INTERRUPT_ENABLE{EA = TRUE;} //打开全局中断#defien WDT_DISABLE {WDTCCR = 0x00;} //关闭看门狗
unsigned char timer0_cnt;
void clock_initial(void){ while((CLKCON&0x20)!=0x20); //等待内部高频RC起振 CLKSWR = 0x51; //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz while((CLKSWR&0xC0)!=0x40); //等待内部高频切换完成 CLKDIV = 0x01; //Fosc1分频得到Fcpu,Fcpu=16MHz }
void gpio_initial(void){ P2M1 = P2M1&0xF0|0x08; //P22设置为推挽输出}
void timer0_initial(void){ TCON1 = 0x00; //Tx0定时器时钟为Fosc TMOD = 0x00; //16位重装载定时器/计数器
//定时10ms : 65536 - ((10/1000) / (1/(Fosc / Timer分频系数))) = 65536 - ((10/1000) / (1/(16000000 / 12))) = 0xcbee TH0 = 0xcb; TL0 = 0xee; //T0定时时间1ms IE |= 0x02; //打开T0中断 TCON |= 0x10; //使能T0
EA = 1; //打开总中断}
int main(){ WDT_DISABLE
clock_initial();
gpio_initial();
timer0_initial();
GLOBAL_INTERRUPT_ENABLE
while(1) { ; }
return 0;}
/**************************************************************************************** @说明 T0中断服务函数* @参数 无* @返回值 无* @注 无***************************************************************************************/void timer0_interrupt_handler(void) interrupt TIMER0_VECTOR //10ms{ if(++timer0_cnt < 100) { if(timer0_cnt % 10 == 0) //100ms { ; } else if(timer0_cnt % 50 == 0) //500ms { LED_TOGGLE //LED闪烁 } //如有需要,添加其它时基(1s以内) } else { timer0_cnt = 0; }}
你的hclink可以直接供电下载吗?为什么别人的都可以,就我的不可以。 Bruing 发表于 2018-4-26 23:04
你的hclink可以直接供电下载吗?为什么别人的都可以,就我的不可以。
不能,要电源供电才行 芯圣的供电有点复杂,如果像STC那样方便就好了。 Puremr 发表于 2018-4-28 15:15
芯圣的供电有点复杂,如果像STC那样方便就好了。
可能是有其他的什么考虑吧 怎么都没找到 HC89S003F4 的KEIL database,能给一份吗?或者告诉下载地址 abin88 发表于 2018-5-7 15:18
怎么都没找到 HC89S003F4 的KEIL database,能给一份吗?或者告诉下载地址
其实,有很多帖子里面都有的,给你贴一份 狼烟客 发表于 2018-5-2 08:55
可能是有其他的什么考虑吧
手册再三强调对供电很严格,我觉得还是设计的问题。 abin88 发表于 2018-5-7 15:18
怎么都没找到 HC89S003F4 的KEIL database,能给一份吗?或者告诉下载地址
官网就有的,芯圣的手册还是很全的。
页:
[1]