佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 3021|回复: 39

PIC 16f84a

[复制链接]
发表于 5-2-2012 12:01 AM | 显示全部楼层 |阅读模式
我最近写了一个program 可是就是failed to build 可以请教一下小弟吗?
; RAM variable
PORTA  EQU 05h
PORTB  EQU 06h
TRISA  EQU 85h
TRISB  EQU 86h
STATUS EQU 03h


; Initialization **************************************

bsf STATUS,RP0     ;GO TO BANK 1.

movlw b'01111'     ;A3 IN, A2 IN, A1 IN, A0 IN.

movwf TRISA        ;MOVE CURRENT REGISTER TO TRISA .

movlw b '00000'    ;SET PORT B ALL OUTPUTS.

movwf TRISB        ;MOVE CURRENT REGISTER TO TRISB.

bcf STATUS,RP0       ;SELECT BANK 0.

limit_switch 1

btfss PORTA,0      ;DO A BIT TEST ON PORT A0.

   ;If it is set to a 1, skip the next instruction.

goto motor_run1    ;If the bit is 1, motor will scroll up.
goto motor_idle1   ;If the bit is 0, motor will remain turned off.

goto sensor

limit_switch 2

btfss PORTA,1      ;DO A BIT TEST ON PORT A1.

                   ;If it is set is 1, skip the next instruction.

goto motor_run2
   ;If the bit is 1, motor will scroll down.

goto motor_idle2   ;If the bit is 0, motor will remain turned off.

goto sensor

sensor
light_sensor

btfss PORTA,2      ;Do a bit test on PORTA, A2.

goto  heat_sensor  ;If the bit is 1, will a bit test on heat sensor.

goto  sensor       ;If the bit is 0, will loop back to sensor.

heat_sensor

btfss PORTA,3      ;Do a bit test on PORTA, A3

goto  motor_run1   ;If the bit is 1, motor will scroll up.

goto  sensor       ;If the bit is 0, will loop back to sensor.

motor_run1

bsf PORTB,0        ;Output 1 to port B0. Turn on motor.

goto limit_switch 1
motor_idle1

bcf PORTB,0        ;Output 0 to port B0. Turn off motor.

goto limit_switch 1
motor_run2

bsf PORTB,1        ;Output 1 to port B1, Turn on motor.

goto limit_switch2
motor_idle2

bcf PORTB,2        ;Output 0 to port B1, Turn off motor.

goto limit_switch2

******End of the program*******

end
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 8-2-2012 11:03 PM | 显示全部楼层
已经解决。
回复

使用道具 举报

 楼主| 发表于 8-2-2012 11:10 PM | 显示全部楼层
请问各位大哥,小弟有个问题,就是在这个programming 里,我需要到temperature sensor, 然而我知道temperature sensor 是analog output, 我的pic 是没有internal a/d converter。
我的问题是,我如果加了一个a/d converter 我的programming 要怎样改?我要如何去set 我的temperature sensor 在certain temperature 的时候它可以给signal? 我的programming 要怎样写?我google 找了很久,大多数都是他们display on lcd only,有的也是其他的programming language,希望你们能帮助我。
问题1:a/d converter 需不需要写programming
问题2:temperature sensor 要怎样programming
回复

使用道具 举报

 楼主| 发表于 8-2-2012 11:10 PM | 显示全部楼层
请问各位大哥,小弟有个问题,就是在这个programming 里,我需要到temperature sensor, 然而我知道temperature sensor 是analog output, 我的pic 是没有internal a/d converter。
我的问题是,我如果加了一个a/d converter 我的programming 要怎样改?我要如何去set 我的temperature sensor 在certain temperature 的时候它可以给signal? 我的programming 要怎样写?我google 找了很久,大多数都是他们display on lcd only,有的也是其他的programming language,希望你们能帮助我。
问题1:a/d converter 需不需要写programming
问题2:temperature sensor 要怎样programming
回复

使用道具 举报

 楼主| 发表于 9-2-2012 12:22 AM | 显示全部楼层
有人可以帮我吗?
回复

使用道具 举报

 楼主| 发表于 9-2-2012 12:25 PM | 显示全部楼层
pic 版主可以帮忙一下吗?
回复

使用道具 举报

Follow Us
发表于 9-2-2012 01:10 PM | 显示全部楼层
你知道没人回复你的原因吗?



1. 你要想做什么? 你的应用是什么?
2. 你想要拿到什么效果
3. 你做了什么
4. 你遇到了什么问题。
5. 有电路图吗?
6. 有照片/图片补充吗?
7. 你住的地区在哪里? 如要买东西可能同区域的朋友能给予建议。
8. 你google 了吗?如有,搜索关键字是什么?

http://cforum.cari.com.my/viewth ... &extra=page%3D1



路过~~帮版主po给你看看

评分

参与人数 1积分 +15 收起 理由
pic + 15

查看全部评分

回复

使用道具 举报

发表于 9-2-2012 02:08 PM | 显示全部楼层
3. 发问前请进来看一下 - 【单晶片目录 (FYP 同学必看)】

找到:
LM35D接PIC16F877A (LCD   ADC) - Right
MCU base的温度感应系统。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 9-2-2012 03:01 PM | 显示全部楼层
你知道没人回复你的原因吗?



1. 你要想做什么? 你的应用是什么?
2. 你想要拿到什么效果
3. 你做 ...
闪灵乐 发表于 9-2-2012 01:10 PM



  
你知道没人回复你的原因吗?





1. 你要想做什么? 你的应用是什么?
2. 你想要拿到什么效果
3. 你做 ...
闪灵乐 发表于 9-2-2012 01:10 PM



1. 你要想做什么? 你的应用是什么?
答:我想放temperature sensor 进入我的pic 里面,我用着pic16f84a 我知道这个pic是没有ADC的,所以要加入   external ADC,为什么要放adc呢,是因为我需要到temperature sensor,temperature sensor 是analog output,然而我需要到digital output。


2. 你想要拿到什么效果
答:我想写一个programming 当temperature 到一定的温度时,她会send ”1“ 去我的pic,如果不是的话就”0“。比如说,我的temperature 到 40 至 50 度 时,她会send signal 给pic,然后会trigger 我的dc motor。不然的话就idle。


3. 你做了什么?
答:我的草稿的programming已经写好了,可是我就是想不到如何放一个external 的 adc,然后,这一个adc 需不需要再program。


4. 你遇到了什么问题。
答:我不懂如何写adc的programming,还有是说我不懂如何set 我的temperature sensor 到一定的温度时,会send signal 给pic。我是用asm写的


5. 有电路图吗?
电路图还没有
6. 有照片/图片补充吗?
7. 你住的地区在哪里? 如要买东西可能同区域的朋友能给予建议。
8. 你google 了吗?如有,搜索关键字是什么?
    答: 我Google了,ADC interface with temperature sensor,可是大多数是叫我们如何display temperature在lcd 上面。还有是大多数都是c language,我需要的是asm


希望我这次给了正确的问题,在请各位帮忙。万分感激
回复

使用道具 举报

发表于 9-2-2012 04:37 PM | 显示全部楼层
pic 版主可以帮忙一下吗?
gozli_andrew88 发表于 9-2-2012 12:25 PM

抱歉~~ 大家都知道我不会ASM 的。

如果没有ADC, 可以用Comparator 如LM339 之类的。
当温度到了, 输出 1 / 0   


http://www.8085projects.info/post/LM339-based-voltage-comparator-application-circuits.aspx
回复

使用道具 举报

 楼主| 发表于 10-2-2012 11:49 AM | 显示全部楼层
抱歉~~ 大家都知道我不会ASM 的。

如果没有ADC, 可以用Comparator 如LM339 之类的。
当温度到了, 输 ...
pic 发表于 9-2-2012 04:37 PM



   那么如果是c language,版主能帮忙吗?我会试一下从c language 着手。
回复

使用道具 举报

发表于 10-2-2012 02:32 PM | 显示全部楼层
那么如果是c language,版主能帮忙吗?我会试一下从c language 着手。
gozli_andrew88 发表于 10-2-2012 11:49 AM

8# 楼
LM35 那个是ADC 的范例。
回复

使用道具 举报

 楼主| 发表于 11-2-2012 01:47 AM | 显示全部楼层
PIC 我想问下LM399 的功能
比如说,如果我要的温度是》25degC, 那LM35的输出是 25x 10mV=250mV=0.25V
那么在LM399的Vref,我放0.25v,是不是就会拿到我的output “1”? 有错吗?希望妳可改正我
回复

使用道具 举报

发表于 11-2-2012 10:58 AM | 显示全部楼层
本帖最后由 pic 于 11-2-2012 11:08 AM 编辑
比如说,如果我要的温度是》25degC, 那LM35的输出是 25x 10mV=250mV=0.25V
那么在LM399的Vref,我放0.25v,是不是就会拿到我的output “1”?
gozli_andrew88 发表于 11-2-2012 01:47 AM

没有错~

你可能需要”迟滞比较器电路“ (Hysteresis Comparator Circuit)
不然当温度在25°C 徘徊时, 你的输出1-0-1-0  不稳定。


介绍你 Voltage Window Detector Circuit你可以设定一个控制范围, 比如成 40~50°之间开motor。



http://home.cogeco.ca/~rpaisley4/Comparators.html
自己努力学习。


我不知道为什么你坚持要用ASM, 要知道现在目前市面是使用 C 了。
这有点像大家都已经用计算机Calculator 来计算, 而你坚持要用笔算。。


我最近写了一个program 可是就是failed to build 可以请教一下小弟吗?

如果是抄的, 就不要讲是自己写的。

还有, 可以告诉你, PIC16F84A 是很旧的MCU, 已经停产了,卖到又贵。ROM 只有1K, RAM 少。。
后来的16F84A 被16F628A 替代, 但是现在的16F628A 又被PIC16F19xx 替代了。。
可以判断, 你google 到的网站, 是很旧很久的了。。
回复

使用道具 举报

 楼主| 发表于 11-2-2012 11:09 AM | 显示全部楼层
本帖最后由 gozli_andrew88 于 11-2-2012 11:14 AM 编辑
没有错~

你可能需要”迟滞比较器电路“ (Hysteresis Comparator Circuit)
不然当温度在25°C 徘徊 ...
pic 发表于 11-2-2012 10:58 AM



    感谢pic.... 我有想过要用c language 的。可是我花了一段时间学asm language...如果现在换回用c languae 的话,又要花一段时间去学。敢问pic... 你有任何网站是觉得给初学者学的吗?
Programming 真的是小弟自己写的。不是抄的...
回复

使用道具 举报

发表于 11-2-2012 11:21 AM | 显示全部楼层
本帖最后由 pic 于 11-2-2012 11:26 AM 编辑
    感谢pic.... 我有想过要用c language 的。可是我花了一段时间学asm language...如果现在换回用c languae 的话,又要花一段时间去学。敢问pic... 你有任何网站是觉得给初学者学的吗?
gozli_andrew88 发表于 11-2-2012 11:09 AM

如学C 写你上面的功能, 包你一天就学会了。

Programming 真的是小弟自己写的。不是抄的...

哦。。对不起~
那么, 你告诉我准确的流程和要的功能, 我用CCS C 写一个示范给你 赔罪。
用我的范例, 你可以在完善成你要的功能。

几个motor? 几个limit switch?  heat sensor? Light sensor?
怎样动作?
Project 的应用是什么?做什么用途?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 11-2-2012 06:25 PM | 显示全部楼层
本帖最后由 gozli_andrew88 于 11-2-2012 06:30 PM 编辑
如学C 写你上面的功能, 包你一天就学会了。


哦。。对不起~
那么, 你告诉我准确的流程和要的功能 ...
pic 发表于 11-2-2012 11:21 AM



   不要说到赔罪那么大件事啦。我只是在学习当中,我的project 是酱走的。里面的component 包括两个limit switch, 两个dc motor, 一个light sensor, 一个temperature sensor。
回复

使用道具 举报

发表于 11-2-2012 11:34 PM | 显示全部楼层
里面的component 包括两个limit switch, 两个dc motor, 一个light sensor, 一个temperature sensor。
gozli_andrew88 发表于 11-2-2012 06:25 PM

两个马达?
你的条件不足啊。。 很模糊啊~我帮不了你的, 直到搞清楚
你说limit SW 1= 1 , motor x 下卷,那几时停呢? 又是哪个motor 呢?
如果按你写的, motor 会很像打兵乓, 上上下下 没完没了。。。
回复

使用道具 举报

 楼主| 发表于 11-2-2012 11:44 PM | 显示全部楼层
本帖最后由 gozli_andrew88 于 11-2-2012 11:45 PM 编辑
两个马达?
你的条件不足啊。。 很模糊啊~我帮不了你的, 直到搞清楚
你说limit SW 1= 1 , motor x 下 ...
pic 发表于 11-2-2012 11:34 PM



   erm.... 可能我解释的不清楚,我的意思是当motor scroll down的时候,我的curtain 触碰到limit sw2 的时候,dc motor 2 就会idle 了。我用两个dc motor 是因为一个让它 卷上,一个卷下,当motor 卷上的时候,碰到limit sw1 ,dc motor 1 就会停止了。抱歉解释的不够清楚...
回复

使用道具 举报

发表于 12-2-2012 10:37 AM | 显示全部楼层
erm.... 可能我解释的不清楚,我的意思是当motor scroll down的时候,我的curtain 触碰到limit sw ...
gozli_andrew88 发表于 11-2-2012 11:44 PM

还是很模糊, 你的机械结构是怎样也不知道, 两个motor? 独立操作? 如果一个motor 要上。 一个motor 要下, 两个 拔河?Limit 是配对的? 当你没有办法让人明白过程, 程序是写不出来, 矛盾重重~~
下面是乱乱写的, 按你的描述, 我的理解写的。
你参考就好。。
编译器是 CCS C。
  1. // gozli_andrew88
  2. // pseudocode
  3. // 12 Feb 2012
  4. // By pic@cari

  5. #include <16F84A.H>
  6. #fuses  XT,NoPROTECT,NoWDT
  7. #use delay(clock=4000000)

  8. #byte PortA = 0x05
  9. #byte PortB = 0x06

  10. #bit iLimitSw1     = PortA.0
  11. #bit iLimitSw2     = PortA.1
  12. #bit iSensor_Light = PortA.2
  13. #bit iSensor_Heat  = PortA.3  
  14. #bit oMotor_SclUp = PortB.0
  15. #bit oMotor_SclDw = PortB.1

  16. //我的意思是当motor scroll down的时候,
  17. //我的curtain 触碰到limit sw2 的时候,dc motor 2 就会idle 了。
  18. //我用两个dc motor 是因为一个让它 卷上,一个卷下,
  19. //当motor 卷上的时候,碰到limit sw1 ,dc motor 1 就会停止了。

  20. Void MotorScrollDown()
  21. {
  22.    oMotor_SclDw=1;// turn on Scroll down motor

  23.   while(iLimitSw2==0)  
  24.    {
  25.       // When LimitSw2 not 1, on motor Scroll down
  26.       // Here we wait until Limit Sw2 =1
  27.    }
  28.    oMotor_SclDw=0;// turn off Scroll down motor
  29. }

  30. Void MotorScrollUp()
  31. {
  32.    oMotor_SclUp=1;// turn on Scroll Up motor

  33.   while(iLimitSw1==0)  
  34.    {
  35.       // When LimitSw1 not 1, on motor Scroll Up
  36.       // Here we wait until Limit Sw1 =1
  37.    }
  38.    oMotor_SclUp=0;// turn off Scroll Up motor
  39. }

  40. void main()
  41. {
  42.    set_tris_A(0b11111111);
  43.    set_tris_B(0b00000000);
  44.    //////////////////////////
  45.    // Init
  46.    if (iLimitSw1==1) // If Limit Switch =1
  47.    {
  48.       MotorScrollDown();
  49.    }

  50.    if (iLimitSw2==1) // if Limit Switch =2
  51.    {
  52.       MotorScrollUp();
  53.    }
  54.    //////////////////////////

  55.    while (1)
  56.    {  
  57.       if(iSensor_Light==1 && iSensor_Heat==1 && iLimitSw1==0)
  58.       {
  59.          // 当Light =1,Temp=1, LimitSw =0
  60.          MotorScrollUp();
  61.       }

  62.       // 什么时候scrioll Down? 因为你没有讲,就自己写吧~
  63.    }
  64. }
复制代码
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


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

GMT+8, 29-3-2024 08:16 PM , Processed in 0.079699 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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