打印

第一次用16F77写了一个简单的程序,烧片后不能运行...请大侠

[复制链接]
4178|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yjypmypm|  楼主 | 2007-12-21 00:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一次用16F77写了一个简单的程序,烧片后不能运行...表现为led_1常亮(外接LED )
请大侠指点....谢谢





#include <pic1677.h>
#define _16C77


#define SLEEP()  asm("sleep")
#define NOP()    asm("nop")
#define clrwdt() asm("clrwdt")


#define uchar  unsigned char  
#define uint   unsigned int


#define led_1   RC7
#define led_2   RC6
#define out     RC0
#define busy    RE0
#define req     RE1

void port_init()
{
 TRISA = 0xFF; //ff;  0 out; 1 in
 TRISB = 0x00;
 TRISC = 0x3E; //fe "0011 1110"
 TRISD = 0x00; 
 TRISE = 0x00; //df;   
 }  


void delay()
{
uint a,b;


  for(a=4000;a>0;a--) 
     {  for(b=200;b>0;b--)
      {
       NOP();

       }
     }
}


main()
{
 port_init();
 
while(1)
{
led_1=1;
 delay();
led_1=0;
 delay();
}
}
沙发
xieyuanbin| | 2007-12-21 08:26 | 只看该作者

你用软仿真看看,

你一个周期是多长时间,如果周期小于30MS,你的感觉就是常亮。

使用特权

评论回复
板凳
yjypmypm|  楼主 | 2007-12-21 22:45 | 只看该作者

谢谢版主支持

   经过软件实测结果延时8.048007秒.
   编程环境(MPLAB7.20+PICC8.05+TOP2004的编程器)

   想做如下一个系统来测试继电器,支持中文显示,输出指定频率,并对接收到的脉冲计数,来判断继电器的好坏.
   
   目前还没闪亮一个LED.....
  边学边做,呵呵.
   
   以后我还会把进展陆续发上来,望大家多多批评...

            

使用特权

评论回复
地板
程序匠人| | 2007-12-21 22:55 | 只看该作者

你和匠人的进度正好同步,哈哈

匠人刚把一个led点亮,你可以去看看

使用特权

评论回复
5
hotpower| | 2007-12-21 23:23 | 只看该作者

哈哈~~~俺现在正式开始STM32菜鸟的历程...

实际当任何菜鸟的前几件事的第1件事情就是让LED闪起来~~~

使用特权

评论回复
6
yjypmypm|  楼主 | 2007-12-21 23:37 | 只看该作者

能与匠人同行,真是深感荣幸啊,还望多多指教.

能发个链接给我吗.
         谢谢

使用特权

评论回复
7
程序匠人| | 2007-12-22 00:09 | 只看该作者
8
xymxym| | 2007-12-22 21:42 | 只看该作者

注意PIC对端口的"读--修改--写"问题!

使用特权

评论回复
9
兰天白云| | 2007-12-23 08:13 | 只看该作者

拿张明锋的书做桌面?

使用特权

评论回复
10
xieyuanbin| | 2007-12-24 12:20 | 只看该作者

楼主桌面够乱。

软件仿真有没有设置芯片运行频率?默认设置是20M,如果你用4M的振荡,那么你的周期就是40秒,我估计你没这个耐心看到LED1灭

使用特权

评论回复
11
systemchip| | 2007-12-24 13:07 | 只看该作者

:

狗叫了。。。

使用特权

评论回复
12
yjypmypm|  楼主 | 2007-12-30 23:28 | 只看该作者

谢谢各位大侠的热心帮助,程序终于可以运行了.

看了各位大侠的热心指点后,就反复用SIM 来调试程序,
关于xymxym 说的端口的": 注意PIC对端口的"读--修改--写"问题!
  我仔细研读了张工出的书163页,发现并没有违反端口的"读--修改--写"的原则.(见后边的电路图)
关于xieyuanbin  版主的晶振振荡频率的问题.
 8.048007确实是在软件仿真频率在20M的情况,我用的晶振是4M的,延时就是40秒.后来又改了参数,使其在4M频率时延时2秒.烧片后仍然没有反应.

关于systemchip 的WDT溢出问题,
  不怕大侠笑话,我还不大会用WDT,所以一般把WDT关掉了...  =_=..

继续查找原因
...........N久后.

发现我用的TOP 2004编程器不支持PIC16f77(据说TOP2004支持几万种MCU,EEPROM和各种逻辑器件------卖编程器的说的).没想到不能烧PIC16f77

烧写界面如下图.

使用特权

评论回复
13
yjypmypm|  楼主 | 2007-12-30 23:28 | 只看该作者

解决办法.

用PIC16F77的芯片擦除,用PIC16C77的烧写(没想到这样居然可以)
烧写界面如下.

使用特权

评论回复
14
yjypmypm|  楼主 | 2007-12-30 23:40 | 只看该作者

紧接着就写了显示汉字的程序如下

#include <pic.h>



#define SLEEP()  asm("sleep")
#define NOP()    asm("nop")
#define clrwdt() asm("clrwdt")


#define uchar  unsigned char  
#define uint   unsigned int


#define led_1   RC7
#define led_2   RC6
#define out     RC0
#define busy    RE0
#define req     RE1
#define bus     PORTD

void port_init()
{
  ADCON1=0X07;   // 初始化AD I/O,使其工作在数字I/O状态


  
 TRISA = 0xFF; //ff;  0 out; 1 in
 TRISB = 0x00;
 TRISC = 0x3E; //fe "0011 1110"
 TRISD = 0x00; 
 TRISE = 0x01; //df;   "0000 0001"  busy(输入) req(输出)
 }  



void send (uchar dat)               //写命令或数据
{
  while(busy==1)
    ;
  bus=dat;
   NOP();
   NOP();
  req=1;
  while(busy==0)
    ;
  req=0;
  return;
}

void wr_zb (uchar comm,uchar addr_x,uchar addr_y,uchar qq,uchar ww)
{
  send(comm);
  send(addr_x);
  send(addr_y);
  send(qq);
  send(ww);
}

void delay()   //延时是间大约是2秒;
{
uint a,b;


  for(a=1000;a>0;a--) 
     {  for(b=200;b>0;b--)
      {
       NOP();

       }
     }
}




main()
{
  
 port_init();
 delay();
  while(1)
  {
  
   led_2=1;
   delay();

 
wr_zb (0xf0,0x00,0x02,0x10,0x01);  //显示一个"啊"
delay();
wr_zb (0xf0,0x03,0x02,0x22,0x42);  // 显示一个"骡"


   delay();
   led_2=0;
   delay();



   
   }
}

使用特权

评论回复
15
yjypmypm|  楼主 | 2007-12-31 00:05 | 只看该作者

上图的红圈内的微调电位器

上图的红圈内的微调电位器,让我走了不少弯路,烧入上面的程序后虽然LED_1能正常闪亮,但是就是屏没有显示,(找问题N久,N久....后)无意中调了几圈微调电位器,发现屏慢慢变亮,后来字就显出来了,此电阻是用来调节屏幕对比度的.阻值越大屏幕越暗,电阻值在2.5K时对比度较好.我用的电阻是调在中间位置(5K )所以虽然有显示,但是看不清.....

显示屏用的是OCMJ4*12B中文字库的..

电路图如下.

使用特权

评论回复
16
yjypmypm|  楼主 | 2007-12-31 00:17 | 只看该作者

写了

写了这么多希望和我一样的新人,少走一点弯路,嘎嘎..
下一步开始写带中断的按键检测..
还希望各位大侠继续指点批评.

使用特权

评论回复
17
ccxlslr| | 2007-12-31 13:43 | 只看该作者

关于PICC 8.05

请问楼主的PICC 8.05是在哪儿下载的,能否告知,我找的都是试用的

使用特权

评论回复
18
yjypmypm|  楼主 | 2008-1-1 18:05 | 只看该作者

www.pic16.com
 里边有.

使用特权

评论回复
19
zhaoyu2005| | 2008-1-7 15:48 | 只看该作者

楼主,一看你的帖子就猜是晶振没有配置对,果然是

不是TOP2004不支持PIC16F77,是你的晶振配置位没有选对,这也怪编程器厂家的人员太弱智,没有象PIC16C77那样设计配置页面,你接下来可以试试将FOSC0和FOSC1的其中一个打勾,一个不打勾,按PIC16F77的资料,4M晶振用XT(Crystal/Resonator,FOSC1=0;FOSC0=1)和HS(High Speed Crystal/Resonator,FOSC1=1;FOSC0=0)均可,而你设置的是LP(Low Power Crystal,FOSC1=0;FOSC0=0)当然不行了
下次记的好好看资料

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

21

帖子

0

粉丝