我用PIC18F系列单片机写程序后,最简单的C程序,用ISIS 7 Professional仿真失败,有哪位老师指导.
补充:#include<pic18.h>//18系列单片机头文件#defineucharunsignedchar//宏定义;#defineuintunsignedint/...
补充:
#include <pic18.h> //18系列单片机头文件
#define uchar unsigned char // 宏定义;
#define uint unsigned int //
//--------------------------------------------------------------------------------------------
//-PIC18F25K20 I/O口初始化程序
//--------------------------------------------------------------------------------------------
void sub_cpu_ini() // I/O口初始化程序
{
OSCCON =0x5F; //0B0101 1111使用片内振荡频率 4MHZ
TRISA=0B00000000; //0B00000000 0表示I/O为输出;1表示输出入
ANSEL=0B00000000; // 0表示数字I/O口;1表示I/O口为模拟输入.
LATA=0B11111111; // 0表示低电平;1表示高电平
TRISB=0B00000000; // B口方向寄存器设置
ANSELH=0B00000000; // 0表示数字I/O口;1表示I/O口为模拟输入.
LATB=0B00000000; // B口输出电平设置;
TRISC=0B00000000; //
LATC=0B00000000;
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--) //
for(j = 110; j > 0; j--); //
}
//-----------------------------------------------------------------------------
// 按键扫描程序;
//-----------------------------------------------------------------------------
void scan()
{
if(RA0==0) // 如果K1按下
{
delay(10); // 延时10MS
if(RA0==0) // 如果K1按下
{
LATB=0B00000001; // RB0为高电平,LED1亮;
while(!RA0) //
{
// 如果(按键没松开)RA0=0,RB0为高电平.LED1亮;
}
LATB=0; // 按键松开后LED1灭;
}
}
if(RA1==0) // 如果K1按下
{
delay(10); // 延时10MS
if(RA1==0) // 如果K1按下
{
LATB|=0B00000010; // RB0为高电平,LED1亮;
while(!RA1) //
{
// 如果(按键没松开)RA0=0,RB0为高电平.LED1亮;
}
LATB=0; // 按键松开后LED1灭;
}
}
void main()
{
uchar i; //
sub_cpu_ini(); // pic I/O口初始化程序
while(1) //
{
scan(); // 按键扫描程序;
}
}
你看有没有问题 ,另外你用ISIS 仿真试试.谢谢你,麻烦你了. 展开
#include <pic18.h> //18系列单片机头文件
#define uchar unsigned char // 宏定义;
#define uint unsigned int //
//--------------------------------------------------------------------------------------------
//-PIC18F25K20 I/O口初始化程序
//--------------------------------------------------------------------------------------------
void sub_cpu_ini() // I/O口初始化程序
{
OSCCON =0x5F; //0B0101 1111使用片内振荡频率 4MHZ
TRISA=0B00000000; //0B00000000 0表示I/O为输出;1表示输出入
ANSEL=0B00000000; // 0表示数字I/O口;1表示I/O口为模拟输入.
LATA=0B11111111; // 0表示低电平;1表示高电平
TRISB=0B00000000; // B口方向寄存器设置
ANSELH=0B00000000; // 0表示数字I/O口;1表示I/O口为模拟输入.
LATB=0B00000000; // B口输出电平设置;
TRISC=0B00000000; //
LATC=0B00000000;
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--) //
for(j = 110; j > 0; j--); //
}
//-----------------------------------------------------------------------------
// 按键扫描程序;
//-----------------------------------------------------------------------------
void scan()
{
if(RA0==0) // 如果K1按下
{
delay(10); // 延时10MS
if(RA0==0) // 如果K1按下
{
LATB=0B00000001; // RB0为高电平,LED1亮;
while(!RA0) //
{
// 如果(按键没松开)RA0=0,RB0为高电平.LED1亮;
}
LATB=0; // 按键松开后LED1灭;
}
}
if(RA1==0) // 如果K1按下
{
delay(10); // 延时10MS
if(RA1==0) // 如果K1按下
{
LATB|=0B00000010; // RB0为高电平,LED1亮;
while(!RA1) //
{
// 如果(按键没松开)RA0=0,RB0为高电平.LED1亮;
}
LATB=0; // 按键松开后LED1灭;
}
}
void main()
{
uchar i; //
sub_cpu_ini(); // pic I/O口初始化程序
while(1) //
{
scan(); // 按键扫描程序;
}
}
你看有没有问题 ,另外你用ISIS 仿真试试.谢谢你,麻烦你了. 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询