佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1483|回复: 14

pic16f877a setting problem

[复制链接]
发表于 28-3-2008 10:57 AM | 显示全部楼层 |阅读模式
我想问为什么 software run 时when dectect input 可以 goto time delay,
但用hardware run 时 when dectect input 没有goto time delay?
朋友说 是 要在 mplab software "configure setting" setting samething?????
so what is to be setting?


警告楼主:
应该是第二次了, 之前说过了一次。
请楼主不要用中文加英文混过去,除了一些名词外,
你的很明显就是要混过去。。。
对不起,  按版规扣你-20分, 你自行翻译修正后会把积分还给你。


[ 本帖最后由 pic 于 1-4-2008 07:14 AM 编辑 ]

评分

参与人数 1积分 -20 收起 理由
pic -20 请楼主不要用中文加英文混过去,除了一些名

查看全部评分

回复

使用道具 举报


ADVERTISEMENT

发表于 29-3-2008 12:32 PM | 显示全部楼层
请问一下。。
你的circuit给PIC16F877A 的circuit
solder 是在PCB 吗???
如不是很可能事你的broad的问地。。
应为我也try (holehole一同一洞)小弟不知道教什么。。希望你明白我指的是什么。。。
因为很多也是cristal 没能function well.
哪(holehole一同一洞)用LED try 美问地
但 LCD 化touch 到time 的会影响到。。。
if wrong pls correct me
回复

使用道具 举报

发表于 29-3-2008 06:03 PM | 显示全部楼层
原帖由 antzz 于 28-3-2008 10:57 AM 发表
我想问为什么 software run 时when dectect input 可以 goto time delay,
但用hardware run 时 when dectect input 没有goto time delay?
朋友说 是 要在 mplab software "configure setting" setting samething?? ...

你做simulation了吗??
回复

使用道具 举报

 楼主| 发表于 31-3-2008 03:32 PM | 显示全部楼层

回复 3# LitterFish 的帖子

我 using mplab simulation 没问题
但try at hardware 也没问题,only 不能 holding long time.......
because the time delay is to hold it for long time...?
It is mplab software "configure setting" have samething i no set?



警告楼主:
应该是第二次了, 之前说过了一次。
请楼主不要用中文加英文混过去,除了一些名词外,
你的很明显就是要混过去。。。
对不起,  按版规扣你-20分, 你自行翻译修正后会把积分还给你。


[ 本帖最后由 pic 于 1-4-2008 07:15 AM 编辑 ]

评分

参与人数 1积分 -20 收起 理由
pic -20 请楼主不要用中文加英文混过去,除了一些名

查看全部评分

回复

使用道具 举报

发表于 31-3-2008 06:55 PM | 显示全部楼层
原帖由 antzz 于 31-3-2008 03:32 PM 发表
我 using mplab simulation 没问题
但try at hardware 也没问题,only 不能 holding long time.......
because the time delay is to hold it for long time...?
It is mplab software ...

你的osc是多少
可以post你的delay的program上来吗??
回复

使用道具 举报

 楼主| 发表于 28-4-2008 10:24 AM | 显示全部楼层
我的osc = 4MHz

main
  CLRF  0X50                                 ;CLEAN THE DATA
  CLRF  0X53                                 ;CLEAN THE DATA
  CLRW                                            ;CLEAN THE W REGISTER
  BSF   STATUS, RP0                    ;SET BANK1 ACTIVE
  MOVLW  0XFF                             ;SET ALL PIN TO HIGH
  MOVWF  TRISC                           ;SET PORTC AS INPUT
  MOVLW  0X00                             ;SET ALL PIN TO LOW
  MOVWF  TRISB                           ;SET PORTB AS OUTPUT
  BCF   STATUS, RP0                   ;SET BANK0 ACTIVE
  BSF   PORTB,2                            ;ACTIVE THE VACUUM MOTOR ROTATE

ROTATE
  BCF   PORTB,7                            ;SET PB7 UNACTIVE (LEFT MOTOR REVERSE)
  BSF   PORTB,5                            ;SET PB5 ACTIVE (LEFT MOTOR FORWARD)
  BSF   PORTB,6                            ;SET PB6 ACTIVE (RIGHT MOTOR FORWARD)

DECTECT
  MOVF  PORTC,W                        ;MOVE PORT C DATA TO W REGISTER
  MOVWF  0X53                             ;MOVE W REGISTER DATA TO IS ADDRESS
  BTFSC  0X53,2                            ;DECTECT THE PORTC PIN 2   
  GOTO  REVERSE                       ;GOTO SUB-ROUTINE
  BTFSC  0X53,3                           ;DECTECT THE PORTC PIN 3     
  GOTO  REVERSE                       ;GOTO SUB-ROUTINE
  GOTO  DECTECT                       ;GOTO SUB-ROUTINE

REVERSE
  BCF   PORTB,5                           ;SET PB5 UNACTIVE (LEFT MOTOR FORWARD)
  BCF   PORTB,6                           ;SET PB6 UNACTIVE (RIGHT MOTOR FORWARD)
  MOVLW  0XA0                            ;Time delay setting
  MOVWF  0X50                            ;address to install time delay data

DELAY_LOOP   
  BSF   PORTB,7                          ;SET PB2 ACTIVE (LEFT MOTOR REVERSE)
  DECFSZ   0X50,F                      ;DECREASE  THE VALUE ADN SAVE IN THIS ADDRESS
  GOTO     DELAY_LOOP            ;GOTO DELAY_LOOP ROUTINE

DECTECT_REV
  MOVF  PORTC,W                      ;MOVE PORT C DATA TO W REGISTER
  MOVWF  0X53                           ;MOVE DATA TO SI ADDRESS
  BTFSC  0X53,2                          ;DECTECT THE PORTC PIN2  
  GOTO  DECTECT_REV           ;GOTO DETECT_REV ADDRESS      
  BTFSC  0X53,3                          ;DECTECT THE PORTC PIN3
  GOTO  DECTECT_REV           ;GOTO DETECT_REV ADDRESS
  GOTO  ROTATE                         ;GOTO SUB-ROUTINE
            
  END

这是我的 pic program
我有一些不明白为什么 "port c input always high" motor 可以reverse,
但是 "port c input high" one pulse,motor 就不能reverse.
是不是 time delay 没有运作?????
回复

使用道具 举报

Follow Us
发表于 28-4-2008 11:14 AM | 显示全部楼层
原帖由 antzz 于 28-4-2008 10:24 AM 发表
我的osc = 4MHz

main
  CLRF  0X50                                 ;CLEAN THE DATA
  CLRF  0X53                                 ;CLEAN THE DATA
  CLRW                                            ;C ...



放上你的原理图与你的流程图在说吧!
回复

使用道具 举报

 楼主| 发表于 28-4-2008 01:53 PM | 显示全部楼层
回复

使用道具 举报


ADVERTISEMENT

发表于 28-4-2008 02:24 PM | 显示全部楼层
原帖由 antzz 于 28-4-2008 01:53 PM 发表
http://www.badongo.com/file/9084454


能让我们知道你的原理图吗?别在这里打哑谜浪费时间与空间。

你也必须要让我们知道,在什么条件下要让你的马达左转或者是右转。

不要等人家问,你才回答。

[ 本帖最后由 rothmans 于 28-4-2008 02:31 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 28-4-2008 02:43 PM | 显示全部楼层
什么是原理图?
Port C Pin 2 & 3 active high
Port B pin 7 是马达左转
Port C Pin 2 & 3 active low
Port B pin 5 & 6 是马达右转。
回复

使用道具 举报

发表于 28-4-2008 03:47 PM | 显示全部楼层
原帖由 antzz 于 28-4-2008 02:43 PM 发表
什么是原理图?
Port C Pin 2 & 3 active high
Port B pin 7 是马达左转
Port C Pin 2 & 3 active low
Port B pin 5 & 6 是马达右转。


原理图 = Circuit Diagram.

你能说你要做什么,想要得到什么结果吗?
回复

使用道具 举报

 楼主| 发表于 28-4-2008 05:07 PM | 显示全部楼层
我有贴在http://www.badongo.com/file/9084454
那是 circuit block diagram.
我的问题是 当Port C Pin 2 & 3 active high 时,
Port B pin 7 的马达左转  不能够左转很久。
可以说  "马达左转" 是跟随 Port C Pin 2 & 3 active high 一起运作。
Port B pin 7 的马达左转 的 time delay 没有运作?

原本的运作是当Port C Pin 2 & 3 active high 时,
Port B pin 7 的马达左转,然后会跟随 time delay 的设定运作,
然后在去察覺Port C Pin 2 & 3 是否active high.
而不是是跟随 Port C Pin 2 & 3 active high 一起运作。
可以说 time delay 没有运作?
回复

使用道具 举报

发表于 28-4-2008 07:49 PM | 显示全部楼层
原帖由 antzz 于 28-4-2008 05:07 PM 发表
我有贴在http://www.badongo.com/file/9084454
那是 circuit block diagram.
我的问题是 当Port C Pin 2 & 3 active high 时,
Port B pin 7 的马达左转  不能够左转很久。
可以说  "马达左转" 是跟随 Port C Pi ...


你的延迟代码是有操作,延迟时间大概只有 0.7mSec.

你提供的资料的确不足够也不符合 pic 的基本要求,而且似乎有所保留,既然如此,不好意思我帮不到你了。

[ 本帖最后由 rothmans 于 28-4-2008 07:52 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 29-4-2008 09:02 AM | 显示全部楼层
对不起!!
少了 Port 设定运作
main
  CLRF  0X50                      ;CLEAN THE DATA
  CLRF  0X53                      ;CLEAN THE DATA
  CLRW                                ;CLEAN THE W REGISTER
  BSF   STATUS, RP0        ;SET BANK1 ACTIVE
  MOVLW  0XFF                  ;SET ALL PIN TO HIGH
  MOVWF  TRISC                ;SET PORTC AS INPUT
  MOVLW  0X00                  ;SET ALL PIN TO LOW
  MOVWF  TRISB                ;SET PORTB AS OUTPUT
  BCF   STATUS, RP0        ;SET BANK0 ACTIVE
  
怎样计算延迟时间?
怎样才能延迟时间 5 sec?
怎样才能符合 pic 的基本要求?
这以经是全部的 程序.
程序有问题??
我想问还需要怎样的资料?
对不起!!
我不是很会發表我的问题
给你很多问题。。。对不起!!
回复

使用道具 举报

发表于 2-5-2008 09:19 AM | 显示全部楼层
原帖由 antzz 于 29-4-2008 09:02 AM 发表



从上面的问答回覆, 和你以前问过的帖, 知道你可能,好像要做的是什么Vacumn Robot 之类的,
如是,那你的应用就是要做 Vacumn Robot的motor控制部分。
你好像要用relay来控制马达做顺时转(clockwise), 和逆时转(anti-clockwise),
用的电路可能是我在论坛放过的。

那你要怎样控制呢?从文字中,知道当:
输入:PortC2=1 和PortC3=1,  
输出:PortB7=1
效果: 也就是你的“马达左转”

输入:PortC2=0 和PortC3=0,  
输出:PortB5=1 , PortB6=1  
效果: 也就是你的“马达右转”

输入是什么? 可能是switch, 可能是sensor, 这个只有等你说明。
怎样让马达停下来?不知道,因为你没说明。

从你的“流程图” 上看, 你要一个延时(Delay),只猜到你可能要延时5秒。
delay的目的是什么, 也要的等你来说明。

好了, 上面是只是我的猜测,可能有错, 但希望读者会有一个简单的概念。

怎样计算延迟时间?
怎样才能延迟时间 5 sec?

网上, 你google: PIC delay routine , 就可以找到很多。。。
如是CCS C, 那 delay_ms(5000);

怎样才能符合 pic 的基本要求?

如果是指我的要求, 你看版规 1), 看你能不能一项一项回答。

这以经是全部的 程序., 程序有问题??

是有问题吧, 不然你不会上来问。


我想问还需要怎样的资料?
对不起!!我不是很会發表我的问题

当我们发问时, 应该先说明整件事, 让人有个概念, 才说你的问题。
有时候, 你的概念是错的, 不可行的, 或别人可能会有更好的建议, 而是你没想到的。
比如说, 有一条河, 你想过河。
你不问人怎样过河, 而你问人怎样游泳。
你费了很大劲, 很多时间去学游泳, 然后你游过河。

但如你一开始就说你要过河,别人可能建议你, 过桥, 或乘船, 这是最简单的过河方法。
但在你知识范围内, 你就是不知道原来有“桥”, 有“船”这种东西。。。你只知道自己的方法, 就是游过去。(搞不好你还要求学蝴蝶式, 用蝴蝶式游过河~)

别人也不知道你学游泳,原来只是要过河, 也浪费了自己的时间, 也浪费了别人的时间来教导你游泳。
如果别人知道你是要过河, 直接提供你过河的直接的方法了。。。


现实个案, 很久以前, 这里有个网友问, 怎样把DC 加倍, 或产生-V(负电压)(旧帖, 有兴趣可以翻出来看)。
讨论了很久很久, 最后才知道原来他要正负电压 (如+9, -9V), 是要让他的超音波发射器(Ultrasonic TX)更强而已。
哇叻~~要加强Ultrasonic TX, 有一个简单的方法, 更本不用那么复杂的去搞正负电压。。。
我花了相当多的时间在那个帖里。。。
后来, 我觉得问题是在我, 因为我没问清楚他的应用, 是我的错, 那是, 我只是会员, 不是版主。
我记住了这个教训, 所以, 当网友问帖时, 我都不不厌其烦的问, 是什么应用 (applications), 要得到什么效果(result, effect)。。。
Rothmans也问了同样的问题, 但你不以为然, 可能你不明白, 所以我在这里解析。

你要做什么, 我上面都是猜的, 搞不好我以后也懂得心理学, 推理了。。。呵呵。。。

ASM 我不精, 下面提供CCS C 给你参考。
  1. #include <16F877A.h>
  2. #fuses HS, NOWDT,NoPROTECT, noBrownOut, NoLVP
  3. #use delay(clock=20000000)

  4. void main()
  5. {
  6.    while(1)
  7.    {
  8.       While(input(pin_C2)==0 && input(pin_C3)==0 )
  9.       {
  10.          output_low(pin_b7);
  11.          output_high(pin_b5);
  12.          output_high(pin_b6);
  13.       }

  14.       While(input(pin_C2)==1 && input(pin_C3)==1 )
  15.       {
  16.          output_high(pin_b7);
  17.          output_low(pin_b5);
  18.          output_low(pin_b6);
  19.          delay_ms(5000); // 根据你的Flowchat, 是有这个delay
  20.       }
  21.    }
  22. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 13-1-2025 08:11 AM , Processed in 0.137334 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表