我用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 仿真试试.谢谢你,麻烦你了.
展开
 我来答
百度网友283d78e
2013-11-04 · 知道合伙人IT服务行家
百度网友283d78e
知道合伙人IT服务行家
采纳数:1491 获赞数:2982

向TA提问 私信TA
展开全部
我都说过了,pic单片机需要设置其看门狗那些,你这个程序里没有,不知道你有没有在proteus里设置的,如果没有设置单片机老是复位,程序都跑不了
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式