当前位置:首页 » 编程语言 » pic系列单片机c语言

pic系列单片机c语言

发布时间: 2022-08-30 09:18:40

‘壹’ pic系列单片机用c语言编程时,让他执行A/D转换的指令是什么

在C语言里没有指令,只有语句,用C语言执行A/D转换如下:
//A/D转换初始化子程序
void
adinitial()
{
ADCON0=0x41;
//选择A/D通道为RA0,且打开A/D转换器
//在工作状态,使A/D转换时钟为8Tosc
ADCON1=0X8E;
//转换结果右移,及ADRESH寄存器的高6位为"0"
//把RA0口设置为模拟量输入方式
ADIE=1;
//A/D转换中断允许
PEIE=1;
//外围中断允许
TRISA0=1;
//设置RA0为输入方式
}
//读ADRESH寄存器就能得到AD转换值了,
汇编的如下:
ADINT
MOVLW
0X51
MOVWF
ADCON0
;选择A/D转换通道为RA2,且打开A/D在工
;作状态,并使A/D转换时钟为8tosc
BANKSEL
ADCON1
;选BANK1体
MOVLW
0X80
MOVWF
ADCON1
;转换结果右移,即ADRESH寄存器的高6位;为“0”,且把RA2口设置成模拟量输入口
CLRF
PIE1
;禁止其它中断
BSF
PIE1,ADIE
;A/D转化中断允许
BSF
TRISA,2
;设置RA2口为输入方式
BSF
INTCON,PEIE
;外围中断允许
BSF
INTCON,GIE
;总中断允许
BCF
STATUS,RP0
;返回BANK0
RETURN

‘贰’ PIC单片机c语言中如何嵌套汇编

3楼的方法是用keil开发51单片机时候潜入汇编的
方法,对于pic单片机来说,不能这杨编译。因为KEIL不能编译pic单片机的C语言和汇编语言,必须用MPLAB+PICC或者MPLAB+
mc编译器

一般pic12、16系列的8位中低端单片机的编译器潜入汇编是用
_asm("
汇编单句语句
");
如果要输入一大段汇编语句,则用:
#asm
N条汇编语句
#endasm

‘叁’ PIC单片机C语言编译器的问题

不能,mplab要和picc连接起来才能编译C,对于你准备用PIC18F433,那你也可以下载picc18 来用

‘肆’ PIC系列单片机中c语言头文件中的一个定义是什么意思

注意是PROTO,而不是PORTO。
宏定义
表示外部变量extern

‘伍’ 关于PIC单片机C语言编程

1:第一个问号:是; 第二个问号:不一定;
2:一些C30有多种类型版本,你说的30C和36可能不是指同一种类型。
3:没破解的编译器过期就不能编译程序了。想用就需要重装(貌似它会在系统内记录的,所以应该是重装操作系统才行)。
4:肯定不可靠。我有过编译经历,破解的编译出来的在逻辑上就会有问题。但这不影响普通学生入门者做设计。如果你是做工业、航天领域设计的,你的领导也不会让你用破解版或者未注册版。所以现在很多单位宁愿用汇编来编译程序。

PICC有支持 PIC10/12/16/18/24/32系列单片机 的C编译器。同时也支持dsPIC30/33 系列DSC芯片的C编译器

‘陆’ 一般8位PIC单片机使用C语言还是汇编语言编程,好像编译器不是支持所有类型的单片机

PIC单片机的C语言编译器是分类支持各类PIC单片机的。
一般做工业产品的公司大多用汇编来编写程序,原因有:
1:pic的8位单片机一般ROM和RAM都相对较小,而现在的PIC的C编译器在优化方面做的不是很好,简单的一个C语句编译器能编出很多行汇编代码。所以有些开发人员认为用c还不如直接用汇编写。
2:因为PIC的C编译器不是免费的,破解版的又存在一些逻辑漏洞什么的。而用pic单片机应用的大多是一些需要稳定性极高的控制场合,所以很多开发公司都干脆直接使用汇编来写。

‘柒’ 单片机 pic c语言

PORTG是单片机里面的寄存器,而lcd_wz8是你在内存里面开出来的一个字节空间。
所以对lcd_wz8空间操作,当然不会对PORTG操作了。

你可以试一下这个结构
union {
struct
{
unsigned b0: 1 _at_ RG0;
unsigned b1: 1 _at_ RG1;
unsigned b2: 1 _at_ RG2;
unsigned b3: 1 _at_ RG3;//bit_wz8的低四位
unsigned b4: 1 _at_ RA0;
unsigned b5: 1 _at_ RA1;
unsigned b6: 1 _at_ RA2;
unsigned b7: 1 _at_ RA3; //bit_wz8的高四位
} bit_wz8;
unsigned char xs_wz8;
} lcd_wz8;

这个联合我也没试过,你可以试下下。
也就是分配变量时候,指定存储地址。把存储地址跟寄存器地址匹配成一样,应该就可以了。

‘捌’ PIC单片机 c语言编程

以DIP-40的PIC16F877A来举例 灯闪动频率为1秒
void Delay_Ms(unsigned char n);
void main(void)
{
while(1)
{
RA0 = 1;//2脚输出
//11脚是供电
RD2 = 1;//21脚输出
trisA = 0x04; //4脚RA2作为输入
if(RA2 == 0) //如果4脚为低电平
{
//执行代码
}
else //如果4脚为高电平
{
//执行代码
}
Delay_Ms(1000); //延时1秒
RA0 = 0;//2脚输出
//11脚是供电
RD2 = 0;//21脚输出
Delay_Ms(1000); //延时1秒
}
}
void Delay_Ms(unsigned char n) //延时程序
{
unsigned int i;
unsigned char j;
for(j=0;j<n;j++)
{
for(i=0;i<Fosc/44000;i++)
{
}
}
}

‘玖’ 有几行PIC单片机的c语言程序代码看不懂,请教一下。

1 static volatile unsigned TMR1 @ 0x0E;
0x0E 是寄存器地址。 表示这个TMR1是寄存器0x0E的值。 具体这个寄存器是做什么用的,需要看你芯片的datasheet,比如 16F874A 16F877A 这个都是计数寄存器的地址。
2 PopQueue应该是一个弹出队列的函数。
将队列首弹出到msg中,返回值为PopSuccess表示取数据成功,取到的数据会存在msg中。
一般用于中断传数据给主线程。这个在主线程中接收。
3 __CONFIG(x) 一般是配置寄存器的。

热点内容
配置型基金如何分配 发布:2025-01-16 14:08:06 浏览:563
adbandroid版本 发布:2025-01-16 13:53:14 浏览:388
直链云存储 发布:2025-01-16 13:19:30 浏览:727
电脑主机服务器多少钱 发布:2025-01-16 13:00:28 浏览:668
linuxoracle操作 发布:2025-01-16 12:40:50 浏览:47
河北存储服务价格 发布:2025-01-16 12:39:21 浏览:351
挂机服务器的搭建 发布:2025-01-16 12:34:07 浏览:417
安卓怎么删除信任凭证 发布:2025-01-16 12:22:06 浏览:338
代理编译 发布:2025-01-16 12:07:59 浏览:794
服务器为什么老是无响应 发布:2025-01-16 12:07:59 浏览:894