1. 简介
ESK-303 是为 HT66F2390 设计的快速入门开发板
![](https://i-blog.csdnimg.cn/blog_migrate/f8ee5fb00a64532038e36b68011e9949.png)
2.主要特点:
● 内嵌的 e-Link Lite 具备 OCDS 与 ICP 功能
● 提供两种工作电压: 3.3V、 5V
● HT66V2390 I/O 口均扩展出接口● 振荡器类型:
♦ 外部高速晶振 – HXT
♦ 内部高速 RC – HIRC
♦ 外部 32.768kHz 晶振 – LXT
♦ 内部 32kHz RC – LIRC
● 完全集成内部 8/12/16MHz 振荡器,无需外接元器件
● 多种工作模式:快速、低速、空闲和休眠
● 所有指令都可在 1~3 个指令周期内完成
● 查表指令
● 115 条功能强大的指令系统
● 16 层堆栈
● 位操作指令
HT-IDE3000
![](https://i-blog.csdnimg.cn/blog_migrate/33c9fca9b1dd46d50612aeea1e97be47.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5de50239b0d3f3e4c24edd785b8dcd30.png)
HOPE3000 For e-Link。
![](https://i-blog.csdnimg.cn/blog_migrate/6cb3fb77d90eba9849775049ac624502.png)
2.LED
新建一个工程
![](https://i-blog.csdnimg.cn/blog_migrate/c3b82db45a48f117731b15addadffd9d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/422aa7883318f3b1dfa5eaea5fe6f4f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/199c492d5fcfec1cf05e3c58afa7a564.png)
![](https://i-blog.csdnimg.cn/blog_migrate/edf5301f4d1b71b2edc8c64c48a611d1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5e867c713d481e0db9b2595dd1953587.png)
LED1接的是PH0,LED2接的是PH1
#include "HT66F2390.h"
#define LED _phc //定义LED 为使能寄存器phc
#define LED1 _ph0 //定义LED的输出IO口
#define LED2 _ph1
void main()
{
_wdtc=0b10101111; //关闭看门狗
LED=0; //使能PHC寄存器为输出模式
while(1)
{
LED1=1; //LED1为高电平,
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/5dd77177805c2d9ff54e38e250fdcb31.png)
3.流水灯
![](https://i-blog.csdnimg.cn/blog_migrate/4ad2eae149a23fcaadbab2ba55f28389.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d48efdb5a19a584184b9516f672c521f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3491f87d9938b46bc1acf51f90d00c10.png)
写入流水灯编程代码代码
头文件:
//MyType.h头文件
typedef unsigned char u8;
typedef char s8;
typedef unsigned short u16;
typedef short s16;
typedef unsigned long u32;
typedef long s32;
#include <HT66F2390.h>
#include "MyType.h"
#define LED_Port _pg //宏定义引脚
#define LED_PortC _pgc //宏定义引脚属性的方向
void Delayms(u16); //延时函数
void main()
{ _wdtc=0b10101111; //关狗
LED_PortC=0x0; //设置 LED_Port 为输出模式
LED_Port=0xFE; //设置 LED_Port 初值
while(1)
{ while(LED_Port & 0b10000000) //若MSB不为0返回继续
{ Delayms(500);
GCC_RL(LED_Port); //左移
}
while(LED_Port & 0b00000001) //若LSB不为0返回继续
{ Delayms(500);
GCC_RR(LED_Port); //右移
}
}
}
void Delayms(u16 del) //延时del*200指令周期
{ u16 i; //fSYS=8MH,延时del*1ms
for(i=0;i<del;i++) GCC_DELAY(2000);
}
![](https://i-blog.csdnimg.cn/blog_migrate/e87f6806b8d0516a16aa5d871c46d0f8.jpeg)
PLAN TWO
延迟函数的生成(一)
-
点击工具,再点击V3代码生成器,会出来如下窗口。代码类型再选择Delay函数。
![](https://i-blog.csdnimg.cn/blog_migrate/e8f0a085124db6f55f20b50781510a9e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c1bbdc8043f322b1f3dabe451331acf8.png)
机器周期=4*1/8000000=0.5us。即一句asm(“nop”)延时了0.5us。unsigned long型数据范围为 0~4294967295
延迟函数的生成(二)
//利用HT-3000IDE的内置延迟函数GCC-DELAY,一条语句的延迟时间为0.5微秒,故GCC-DELAY(2000)就是1毫秒的延迟。
void delay(unsigned long k) //毫秒延迟函数
{
unsigned long i;
for(i=0;i<=k;i++)
{
GCC_DELAY(2000);
}
}
两个灯的交替闪烁代码
#include "HT66F2370.h" //引入芯片的头文件
/*
宏定义LED1为PH0,LED2为PH2,具体还是看开发板的原理图
*/
#define LED _phc
#define LED1 _ph1
#define LED2 _ph0
/*
利用内置的延迟函数来创建延迟函数
*/
void delay(unsigned long count) //延迟函数
{
volatile unsigned long i;
for(i=0;i<count;i++)
GCC_DELAY(2000);
}
void main()
{
LED=0x0; //使能PA端口为输出模式
while(1)
{
LED1=0; //先LED1亮,亮一段1s后LED1灭,LED2亮,一直循环整个过程
LED2=1;
delay(1000);
LED1=1;
LED2=0;
delay(1000);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/03d423773944ebd0d2d376b424cde60a.png)
//所谓带进位左移的具体功能就是原操作数最高位移入进位标志CF,其余各位依次左移1位,CF原值移入操//作./数最低位。指令执行前,CF=0, AL =10111001 =B9H,执行 RCL AL,1结果 CF=1,AL =01110010 =72H所以的想的代码是(延时函数还是不变的)
void main()
{
_pac=0x0;
_pa=0xff;
while(1)
{
GCC_RLC(_pa);
delay(66666);
}
}
4,定时器详解
(104条消息) 合泰杯 | 合泰单片机入门 定时器详解(三)_嵌入式RTOS圈的博客-CSDN博客_合泰bs87d20a-3定时器
(104条消息) 合泰杯——合泰单片机工程6之定时器中断_yijianpeng的博客-CSDN博客_合泰 定时器中断
5按键输入
(104条消息) 合泰杯——合泰单片机工程3之按键输入_yijianpeng的博客-CSDN博客
6外部中断
(104条消息) 合泰杯——合泰单片机工程4之外部中断_yijianpeng的博客-CSDN博客_合泰单片机外部中断
7.串口通信
(104条消息) 合泰杯——合泰单片机工程5之串口通信_yijianpeng的博客-CSDN博客_合泰单片机串口通信
8PWM
(104条消息) 合泰杯——合泰单片机工程7之PWM输出_yijianpeng的博客-CSDN博客__ptm##n##c0