❶ 敬爱的合泰单片机高手!!!!!!!
1.怎样用软件设置:CMOSE输出,带或不带上拉电阻的斯密特触发输入,A/D输入????
输出就是输出,什么"CMOS输出"是Holtek官方术语,"斯密特触发输入"也是官方术语,带不带上拉电阻是在IDE掩膜选项中设置的
引脚是AD输入还是数字IO靠ADCR中的控制位来定义
2.怎样理解ADCR中的前六位设置???当设置好模义输入通道,为什么还要定义PB呢????
这是HT46R52的ADCR 参考(估计HT46R22是一样的):
0 ACS0 选择模拟输入通道
1 ACS1 选择模拟输入通道
2 ACS2 选择模拟输入通道
3 PCR0 为0 则关闭,减小功耗
4 PCR1 为0 则关闭,减小功耗
5 PCR2 为0 则关闭,减小功耗
6 EOC A/D 转换结束标志(0:A/D 转换结束)
每次bit3-5 状态的改变后都必须通过START 信号来初始化A/D 转换器,
否则EOC可能会处于不确定状态
7 START 0→1→0:开始; 0→1:A/D 转换复位并且置EOC为“1”
“当设置好模义输入通道,为什么还要定义PB呢????”
前面0-2只是个通道选择(多选1模拟开关),并不能决定PB口是模拟口还是数字IO
就像有一块内存空间,你选中了一个字节来用,但里面的内容到底什么不知道,设置一下就知道了。
3.端口问题:
1.控制寄存器:设定IO口是输入还是输出,数据寄存器(端口寄存器)读取/设置端口电平
2.设_pac=0b00000000;意思是pa口全部输出;设_pa= 0b00000000;则pa全部输出0
3.初始化端口的步骤示例:_pac=0x00; _pa=0x00;
4.其他问题:
#pragma vector isr_time @ 0x08 //中断服务程序定义
#pragma vector isr_ad @ 0x0c //中断服务程序定义
uchar sign0 @ 0x40; //在绝对地址定义变量
uchar sign1 @ 0x41; //在绝对地址定义变量
❷ 要做一名出色的单片机工程师应掌握好哪些知识
这是单片机初学者经常问的问题。对于这个问题,我想没有人敢下定论。因为每一种单片机各有所长,都适用于其所能充分发挥作用的领域,不存在优差之分。学单片机应该先学51单片机,学会了51单片机再去学其他单片机,这是学习单片机过来人的同感,也是公认的学习方法。为什么要先学51单片机?因为51单片发展最早,应用最广泛,特别是I/O口的操作非常简单,而且相关的学习资料最多、教材最成熟,学习起来得心应手,入门很快。有了这个基础再去学习其他单片机那就是小菜一碟了,只是对着芯片数据手册设置寄存器罢了,快则一两个星期,多则一个月就能掌握另一种单片机了。如果一开始就选择非51单片机学习,那将是“路漫漫其修远兮,你将艰难而求索!”
那学51单片机用C语言还是汇编语言好?当然是C语言了。因为:1.C语言是高级语言,代码移植性好,易于维护;2.编程灵活,随心所欲;3.语言层次分明,思路清晰,可读性强。4. C语言是目前最流行的单片机编程语言,例程代码多,便于参考,单片机技术发展之快,应用之广,学习群体日益庞大,这和keil C51开发环境的问世是分不开的。5.C语言是大众编程语言,是其他编程语言的基础,学会了C语言,对于进一步深造的选择就很自由了。汇编语言是早期单片机学习使用的语言,优点是执行指令比C语言稍快外,其他方面笔者不敢恭维。但对于没有接触过单片机的初学者,笔者认为,应从汇编语言开始学起。
学会51单片机以后,就可以根据你从事的工作或者你的目标选择以下一种或多种继续深造。
1.AVR单片机-----速度快,一个时钟周期执行一条指令,而普通的51单片机需要12个时钟周期执行一条指令。当然,Atmel公司出品的AT89LP系列单片机也是一个时钟执行一条指令,但目前还未普及。AVR单片机比51单片机多了USB通信模块、SPI通信模块、I 2C 通信模块、PWM模块、AD转换模块等,但在C语言编程方面对I/O的操作比51麻烦得多。
2.PIC单片机------品种齐全,应用领域广泛,片内资源也很丰富,也是很受欢迎的单片机。比51单片机多SPI通信模块、I 2C 通信模块、PWM模块、AD转换模块等片内资源。4个时钟周期执行一条指令,速度看似比51单片机快,事实上并非如此,PIC单片机最高时钟频率一般为8MHZ,而51单片机最高时钟频率可达到33MHZ 。速度上PIC单片机并不占优势,而抗干扰能力则也比51单片机略强。C语言编程方面对I/O的操作要比51麻烦。
3.MSP430单片机-----16位单片机,速度快,一个时钟周期执行一条指令,超低电压低功耗,适合用于电池供电设备。
4.Motorola单片机-----抗干扰能力极强,适用于恶劣环境,这是以降低速度为代价的。
5.DSP技术------用于音频、视频、通信等快速数字处理领域,速度超快,编程算法也比较复杂。
6.FPGA技术------难度和单片机差不多,应用领域逐渐广泛。
7.嵌入式系统-----应用于非PC机控制以外的复杂的智能控制系统,以及智能通信设备、掌上电脑、学习设备、娱乐设备等,应用领域也很广泛。学习难度也较大,需要有操作系统、硬件、驱动原理等方面的知识。山寨版的手机、掌上电脑等满街泛滥都是嵌入式系统发展惹的祸。
8.其他单片机,如德州仪器单片机,合泰单片机, NEC 单片机等。
要说学哪一种单片机最有前途,笔者也不敢妄加断言。不管选择那一种,前途光明与否都由你的造诣深度来决定,精则兴,不精则废。
❸ 合泰单片机HT67F系列的使用问题
1,寄存器名与手册对不上号是很正常的,不光合泰的单片机有这种情况,其它的单片机也有这种情况,出现这种情况程序编译是通不过的。所以有时候要关心一下头文件,以头文件的器存器命名为准,或自己更改头文件。
2,关于管脚复用问题。一般情况下不对管脚进行配置默认都是普通IO,但是如果要使用管脚的其它功能,在使用前就要先对相关寄存器进行配置,比如要使用AN1就要先配置好AD转换相关的寄存器,如:ADR、ADRL、ADRH、ADCR、ACSR寄存器。
❹ 学什么单片机好学单片机怎么样能赚钱吗有前途吗
先学51单片机,可以看看学习视频,对于每个人来说,多学习一种技能 可以拓宽 就业渠道,
单片机学习可以先学习一些仿真示例,如
#include<reg51.h>
#define uchar unsigned char
uchar temp;
int key1,key,disbuf;// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f
unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char ledx[8];
uchar t,j,i;
bit s0,s1;
void scan() //要是按键了,扫描键盘编码值
{
P1=0xF0;
for(j=0;j<250;j++);
temp=P1;
switch(temp)
{
case 0xe0: key1=0; //
break;
case 0xd0: key1=1; //
break;
case 0xb0: key1=2; //
break;
case 0x70: key1=3; //
break;
}
P1=0x0f;
for(j=0;j<250;j++)
temp=P1;
switch(temp)
{
case 0x0E: key=key1+0;
break;
case 0x0D: key=key1+4;
break;
case 0x0B: key=key1+8;
break;
case 0x07: key=key1+12;
break;
default : key=-1;
}
if((key1+1)&&(key+1)) disbuf=key;
}
void ejjc() //判断是否按键
{
P1=0xF0;
if(P1!=0xF0) { scan();s0=1;}
else { s0=0; s1=1;}
}
void main()
{
TMOD=0x51; // T1 外部计数
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
EA=1;
ET0=1; //开定时器0中断
ET1=1; //开定时器1中断
TR0=1; //启动定时器0
TR1=1; //启动定时器1
while(1)
{
ejjc();
if(s0==1 && s1==1)
{
s0=0;s1=0;
for(i=0;i<8;i++)
{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }
}
}
}
void timer0() interrupt 1
{
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
P0=0xff;
switch(t)
{
case 0: P2=LED7Code[ledx[0]]; P0=0xfe;break;
case 1: P2=LED7Code[ledx[1]]; P0=0xfd;break;
case 2: P2=LED7Code[ledx[2]]; P0=0xfb;break;
case 3: P2=LED7Code[ledx[3]]; P0=0xf7;break;
case 4: P2=LED7Code[ledx[4]]; P0=0xef;break;
case 5: P2=LED7Code[ledx[5]]; P0=0xdf;break;
case 6: P2=LED7Code[ledx[6]]; P0=0xbf;break;
case 7: P2=LED7Code[ledx[7]]; P0=0x7f;break;
}
t++;
if(t==8) t=0;
}
❺ hs2怎么初始化
HS26Fxx-C_Demo_Code-GPIO初始化函数
功能:GPIO初始化函数
void GPIO_Init(void)
函数声明
//.h文件声明***************************************************************************
void GPIO_Init(void); //IO初始化
1
2
1
2
函数定义
//.c文件函数定义****************************************************
/*System initial sub function<<===================================*/
//******************************************************************
void GPIO_Init(void)
{
//P0_IO_init
P0 =0x00u; //-000 0000 ;
P0M =0xFFu; //-111 1111 ;InOut ;0=in / 1=out
P0UR=0x00u; //-000 0000 ;UP_pull ;0=dis / 1=en
P0PD=0x00u; //-000 0000 ;DOWN_pull ;0=dis / 1=en
P0W =0x00u; //0000 0000 ;Wakeup ;0=dis / 1=en
//P1_IO_init
P1 =0x00u; //---- -000 ;
P1M =0xFFu; //---- -111 ;InOut ;0=in / 1=out
P1UR=0x00u; //---- -000 ;UP_pull ;0=dis / 1=en
P1PD=0x00u; //---- -000 ;DOWN_pull ;0=dis / 1=en
P1W =0x00u; //0000 0000 ;Wakeup ;0=dis / 1=en
//P2_IO_init
P4 =0x00u; //0000 0000
P4M =0xFFu; //1111 1111 ;InOut ;0=in / 1=out
P4UR=0x00u; //0000 0100 ;UP_pull ;0=dis / 1=en
P4PD=0x00u; //0000 0000 ;DOWN_pull ;0=dis / 1=en
P4W =0x00u; //0000 0000 ;wakeup ;0=dis / 1=en
//******************************************************
FGIE=0; /* 总中断使能位 <<======================*/
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
函数调用
GPIO_Init(); //端口初始化
1
1
打开CSDN,阅读体验更佳
s3c2440硬件学习笔记----GPIO接口
一、GPIO介绍 GPIO(General Purpose Input Output)意为通用输入输出端口,简单说就是一些引脚,通过它们输出高低电平或者通过它们读取引脚高低电平状态 S3C2440有130个I/O端口,分为A-J共9组:GPA、GPB、、、、GPJ,可以通过设置寄存器来确定某个引脚用于输入、输出还是特殊功能。 比如:可以设置GPH6作为输入、输出、或者用于串口。 1、通过寄...
继续访问
MTK Android7.0 gpio口控制demo
MTK6737平台,暴露底层给上层的设备节点控制接口。简单的gpio口控制demo。
ioremap_gpio_demo.c
ioremap demo对应博客介绍 https://xuesong.blog.csdn.net/article/details/114156170
用C控制GPIO
http://forum.cubietech.com/forum.php?mod=viewthread&tid=405&reltid=876&pre_thread_id=0&pre_pos=6&ext=CB 用C控制GPIO的代码[可以直接看CPU占用率了] http://forum.cubietech.com/forum.php?mod=viewthread&tid=405 #in
继续访问
HS26Fxx-C_Demo_Code-延时函数
HS26Fxx-Dome_Code void Delay_Us(unsigned char Delay_Cnt) //{xx.h}文件中声明延时函数************************************************ void Delay_Us(unsigned char Delay_Cnt); //延时函数 //{.c}定义延时函数*********************************************************************** /
继续访问
HS26Fxx-C_Demo_Code-ADC相关函数的定义与使用
HS26Fxx-C_Demo_Code-ADC相关函数的定义与使用 功能:测试AD采样功能 void ADC_Init(void) unsigned long ADC_Data_Collect(unsigned char ADC_Input_Pin,unsigned char ADC_AIN) 1.AD相关函数声明 //.h文件声明*************************************************************************** void ADC_Init
继续访问
HS26Fxx-C_Demo_Code-中断函数、中断子函数的定义与使用
HS26Fxx-C_Demo_Code-中断函数、中断子函数的定义与使用 功能:定时器TC0中断程序参考 void __interrupt[0x08] Interrupt(void)//无需声明 void __interrupt Interrupt_Demo(void) 中断子函数 函数声明 //中断子函数函数声明*********************************************************************** void __interrupt Interrupt
继续访问
HS26Fxx-C_Demo_Code-测试函数RF格式,UART格式的定义与使用
HS26Fxx-C_Demo_Code-测试函数RF格式,UART格式的定义与使用 功能:利用示波器或者UART串口工具测试 void Send_Dat_For_Test(unsigned char Test_Dat) 1.测试函数函数声明 //.h文件声明*************************************************************************** void Send_Dat_For_Test(unsigned char Test_Dat);
继续访问
HT66FXX.zip_HT-IDE3000_HT66Fxx_ht_ht-46_ht66f
HT单片机HT66F系列最基本的实用教程中文资料完全版
最新发布 C8051FXX-boot-loader-.zip_boot loader
主要描述了C8051F0XX系列单片机的引导装入程序考虑及举例
stc8_demo程序.rar_DEMO_STC8 PCA_stc8_stc8 pwm_stc8a8
stc8,DEMO程序: uart stc8aid delay IO timer adc pwm pca
cape-fxx.rar_1c60deac5d48_dcfxx_fxxee_out_tof_cape beagle
FXX_DRV_VER 0.1 AM335 interface functions: int ioctrl_init(void) int ioctrl_cleanup(void) uint32_t *ioctrl_remap(uint32_t *addr_ptr, size_t block_len) int ioctrl_unmap(uint32_t *addr_ptr, size_...
fxx.zip_c 语言微分_telephonew1j_产品代码fxx
常微分代码,主要是C语言方面的,大家可以下载看看的
HT66FXX-EEPROM.rar_单片机开发_Asm_
HT66FXX-EEPROM的读写及应用说明文档
FXX_PR3_NV.rar
FXX_PR3_NV.rar,FXX_PR3_NV.xml
合泰单片机例程资料,HT66FXX FLASH例程,源码学习.rar_DEMO_ht66f50 _newsz3i_合泰 学习_合
合泰单片机HT66F50例程工程源程序,合泰各种例程demo都在里面
HC89F3xx1_Touch_Demo_Code V1.0.5.0_fourt1r_HC89F3XXX_芯圣_DEMO_芯圣程
芯圣HC89FXX系列触摸程序,调好的。官方下载。
STM32F103ZET6 - USB_DFU 升级
STM32F103ZET6 - USB_DFU 升级 前言: 记录下碰到的坑!! 仿真时发现读按键状态函数HAL_GPIO_ReadPin(KEY0_GPIO_Port,KEY0_Pin),无论是判断等于1还是0,仿真都能进入; 纠结很久,然后查看GPIOx_IDR寄存器, 发现没问题,按键按下时该位为0,不按为1; 经查找发现是IDE优化等级问题,STM32CubeMX生成的代码默认优化等级为...
继续访问
单片机
编程语言
写评论
评论
收藏
点赞
❻ 合泰单片机汇编问题
data .section 'data' ;数据段 这样的写法是比较标准的整齐的汇编写法,就是告诉你这段就是定义变量 和REGISTER 等.现在好多人定义这些都是放在INC文件里就可以的了.
code .section at 0 'code' 这个就是告诉你下面这段就是单片机的程式了.
子程式里proc 是子程式开始,endp就是子程式的结束,其实现在好多人 直接写子程式名就可以的了. 好像 sub: ret
sdz 是 register 自减1, 如果为0 就是跳过下一条指令,一般的用法是
SDZ R
JMP LOOP
$
❼ 合泰单片机C语言 宏 #define PB_SWC _1b_0 #define PB_SWPU _19_0什么意思
#define PB_SWC _1b_0
这个就是用PB_SWC来替代_1b_0,_1b_0的值为多少你还得继续去追踪
#define PB_SWPU _19_0
这个意思也一样,就是用PB_SWPU 来替代_1b_0,_19_0
如果#define _19_0 10 那么PB_SWPU 就等于 10
❽ 合泰单片机视频教程
合泰单片机大部分是51内核,合泰单片机陈本低但是资料少是目前产品设计使用较多教学用胶少,可以先学习其他有视频教程的51内核单片机再学合泰
❾ 在自学合泰单片机,有没有入门讨论QQ群 帮助
合泰单片机讨论群基本没有,是要是单片机基础或者入门的都能写合泰的,大家基本都是从89c51入门学出来的,单片机只要会一种,别的基本都差不多了,不同单片机编译环境不一样,配置寄存器不同,底层配置是死的,应用逻辑层是活的,例如你51单片机入门了,换合泰单片机,你需要写一个时钟,你大脑第一反应就是配置定时器,去查手册查寄存器,如果不查直接找官方demo移植,定时器配置好剩下就和51单片机没有区别了,你就可以写逻辑层代码了。
❿ 合泰单片机前景怎么样
合泰单片机的老型号非常稳定,新型号有一部分性价比很高的,例如:SOP8封装的带AD芯片HT46R005才卖0.85/片。
该单片机学习套件不但可以做流水灯、按键检测(AD、IO均可)、蜂鸣器控制、继电器控制、温度检测、24C02读写、红外遥控解码、数码管显示(74HC164、1628驱动)、液晶显示(1621驱动)等实验,还可以做电水壶、消毒柜、电热水器、抽油烟机等小家电项目实验。配套ISP烧写器+FLASH芯片,无需反复拔插IC及连接线,所有实验,轻松搞定!