佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1792|回复: 20

PIC16F877A 的 project.

[复制链接]
发表于 7-3-2007 05:17 PM | 显示全部楼层 |阅读模式
我自己试了很久,但还是不成功,希望有人可以帮帮我, 先说声谢谢。


大致的概念是这样的。。









我用 PORT E 和 PORT C 来接收来自键盘的INPUT,PORT B 和 PORT D 来TEST CHIP。
然后PORT D 来控制LED.

我的一部分CODE 是这样的。。

processor 16F877A
include <p16f877A.inc>

;..........................NO INITAL THE CHIP FUNCTION......................................
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF
;...........................INITIAL LCD & keypad (PORT A,C,E)...............................
ORG 0
BCF        STATUS,RP0
BCF     STATUS,RP1
CLRF    PORTA

BSF        STATUS,RP0    ; TO SET PORTA AS DIGITAL INPUT
MOVLW    0x06
MOVWF     ADCON1
BCF        STATUS,RP0

movlw B'11111111'
tris PORTC
movlw B'000000'
tris PORTA
movlw B'111'
movwf TRISE


;......................................get input from keypad.......................
scan0        btfss    PORTC, 0
            goto    lp0
            goto    scan1

scan1        btfss    PORTC, 1
            goto    lp1
            goto    scan2

scan2        btfss    PORTC, 2
            goto    lp2
            goto    scan3

scan3        btfss    PORTC, 3
            goto    lp3
            goto    scan4

scan4        btfss    PORTC, 4
            goto    lp4
            goto    scan5

scan5        btfss    PORTC, 5
            goto    lp5
            goto    scan6

scan6        btfss    PORTE, 0
            goto    lp6
            goto    scan7

scan7        btfss    PORTE, 1
            goto    lp7
            goto    scan8

scan8        btfss    PORTE, 2
            goto    lp8
            goto    scan9

scan9        btfss    PORTC, 6
            goto    lp9
            goto    scan0


;....................................goto chip test loop.............................
;...........................................chip0...................................
lp0            bsf PORTA, 0
            btfss PORTC, 7
            goto chip0
            goto lp0
;...........................................chip1....................................
lp1            bsf PORTA, 0
            btfss PORTC, 7
            goto wrong
            goto lp1
;..........................................chip2......................................
lp2            bsf PORTA, 0
            btfss PORTC, 7
            goto well
            goto lp2
;..........................................chip3...................................
lp3            bsf PORTA, 0
            btfss PORTC, 7
            goto wrong
            goto lp3
;..........................................chip4..............................
lp4            bsf PORTA, 0
            btfss PORTC, 7
            goto well
            goto lp4
;.........................................chip5.......................................
lp5            bsf PORTA, 0
            btfss PORTC, 7
            goto wrong
            goto lp5
;.............................................chip6.....................................
lp6            bsf PORTA, 0
            btfss PORTC, 7
            goto wrong
            goto lp6
;...............................................chip7.........................
lp7            bsf PORTA, 0
            btfss PORTC, 7
            goto well
            goto lp7
;..............................................chip8.............................
lp8            bsf PORTA, 0
            btfss PORTC, 7
            goto well
            goto lp8
;...........................................chip9..............................
lp9            bsf PORTA, 0
            btfss PORTC, 7
            goto wrong
            goto lp9


;...................................test loop ....................................................

chip0    movlw     B'00010010'
        movwf     TRISB
        movlw     B'00100100'
        movwf     TRISD

ls000    Bsf PORTD, 0
        Bsf PORTD, 1
        Bsf PORTD, 3
        Bsf PORTD, 4
        Bsf PORTB, 2
        Bsf PORTA, 3
        Bsf PORTB, 5
        Bsf PORTB, 6
        Bsf PORTB, 7
        Bcf PORTD, 6
        

    btfsc    PORTB, 1
    goto    damage
    btfsc    PORTB, 4
    goto    damage
    btfsc    PORTD, 2
    goto    damage
    btfsc    PORTD, 5
    goto    damage

    Bsf PORTD, 0
    Bsf PORTD, 3
    Bsf PORTB, 2
    Bsf PORTB, 5
    Bcf PORTD, 1
    Bcf PORTD, 4
    Bcf PORTB, 3
    Bcf PORTB, 6

    btfss    PORTB, 1
    goto    damage
    btfss    PORTB, 4
    goto    damage
    btfss    PORTD, 2
    goto    damage
    btfss    PORTD, 5
    goto    damage
   
    Bcf PORTD, 0
    Bcf PORTD, 3
    Bcf PORTB, 2
    Bcf PORTB, 5
    Bsf PORTD, 1
    Bsf PORTD, 4
    Bsf PORTB, 3
    Bsf PORTB, 6
   
    btfss    PORTB, 1
    goto    damage
    btfss    PORTB, 4
    goto    damage
    btfss    PORTD, 2
    goto    damage
    btfss    PORTD, 5
    goto    damage
    goto     well
   
;...................................well or wrong..........................................
well    bsf PORTA, 1
        bcf PORTA, 2
        bcf PORTA, 3
        bcf PORTA, 4
        goto done        

wrong    bsf    PORTA, 2
        bcf PORTA, 1
        bcf PORTA, 3
        bcf PORTA, 4
        goto done

damage    bsf    PORTA, 2
        bcf PORTA, 1
        bcf PORTA, 3
        bcf PORTA, 4
        goto done

wait    bsf PORTA, 4
        bcf PORTA, 2
        bcf PORTA, 3
        bcf PORTA, 1
        goto done

done    bsf PORTA, 5
        goto done



END

[ 本帖最后由 nikel 于 7-3-2007 09:20 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 11-3-2007 08:04 AM | 显示全部楼层
原帖由 nikel 于 7-3-2007 05:17 PM 发表
我自己试了很久,但还是不成功,希望有人可以帮帮我, 先说声谢谢。

你试了什么?是什么不成功呢?你的应用是什么?
回复

使用道具 举报

 楼主| 发表于 11-3-2007 10:26 AM | 显示全部楼层
原帖由 pic 于 11-3-2007 08:04 AM 发表

你试了什么?是什么不成功呢?你的应用是什么?


可以说我也不知到为什么不成功,我是用PICstart plus 的,
很多时候PIC都不能正确的 Load Sequence.
我觉得是 CONFIGURE 不对,
但我又不知道哪里不对。。

我还只是 PIC 的初学者。
回复

使用道具 举报

发表于 11-3-2007 12:08 PM | 显示全部楼层
原帖由 nikel 于 11-3-2007 10:26 AM 发表
可以说我也不知到为什么不成功,我是用PICstart plus 的,
很多时候PIC都不能正确的 Load Sequence.
我觉得是 CONFIGURE 不对,
但我又不知道哪里不对。。

我还只是 PIC 的初学者。


你是写coding有问题, 还是PIC烧录有问题?

你的电路有LCD, Keypad 和不懂是什么的ChipSlot。
什么都不管先,一样一样来。。。
首先你的LCD可以操作吗?可以了再做Keypad 的部分。。等等。。。


还有, 你还没说你要做的是什么? 你的应用是什么?就是说最后你要拿到什么效果/结果?

LCD的部分,可以参考旧帖, 有电路,有C源码。
回复

使用道具 举报

 楼主| 发表于 11-3-2007 12:31 PM | 显示全部楼层
原帖由 pic 于 11-3-2007 12:08 PM 发表


你是写coding有问题, 还是PIC烧录有问题?

你的电路有LCD, Keypad 和不懂是什么的ChipSlot。
什么都不管先,一样一样来。。。
首先你的LCD可以操作吗?可以了再做Keypad 的部分。。等等。。。

...


C源码, 我没学过,如果现在才学时间上有些紧闭。
我的 KEYPAD 以经可以用了。。
LCD 还不行。。


我要做的是 IC TESTER, 也就是说,当我把 IC 放进 IC SLOT时,
再输入IC 的 PART NUMBER, 然后 PIC 、就会输出和接收 IC 传回来的资料比对。
然后判定那 IC 有没有坏。
还可不可以用。

严格来说我觉得是CODING 有问题,PIC烧录应该没事,都能烧录。
回复

使用道具 举报

发表于 11-3-2007 12:43 PM | 显示全部楼层
原帖由 nikel 于 11-3-2007 12:31 PM 发表
C源码, 我没学过,如果现在才学时间上有些紧闭。
我的 KEYPAD 以经可以用了。。
LCD 还不行。。


我要做的是 IC TESTER, 也就是说,当我把 IC 放进 IC SLOT时,
再输入IC 的 PART NUMBER, 然后 PIC ...

那你现在的问题是什么?是LCD的部分?
如是其他的coding 问题,你有用MPLAB debug吗?
回复

使用道具 举报

Follow Us
 楼主| 发表于 11-3-2007 12:50 PM | 显示全部楼层
原帖由 pic 于 11-3-2007 12:43 PM 发表

那你现在的问题是什么?是LCD的部分?
如是其他的coding 问题,你有用MPLAB debug吗?


我有用MPLAB debug。 没问题。。
LCD 也有问题,但是不知到为什么,
PORTD 不能够用。。
老实说,我不知道为什么越做越乱了。。
在加上哦朋友帮忙买的 LCD 找不到 DATA SHEET..
所以现在没用 LCD,先用 LED 来做。

[ 本帖最后由 nikel 于 11-3-2007 12:52 PM 编辑 ]
回复

使用道具 举报

发表于 11-3-2007 01:03 PM | 显示全部楼层

回复 #7 nikel 的帖子

LCD是去PortD?你的电路是#1楼那个? 还是改了?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 11-3-2007 01:06 PM | 显示全部楼层
原帖由 pic 于 11-3-2007 01:03 PM 发表
LCD是去PortD?你的电路是#1楼那个? 还是改了?


LCD 是去PORT A 的。。
楼上那个电路图是对的。。
如果可以的话,请帮忙看看那 Program 有没有问题,
电路图应该是没有问题的了。。
回复

使用道具 举报

发表于 11-3-2007 01:40 PM | 显示全部楼层
原帖由 nikel 于 11-3-2007 01:06 PM 发表


LCD 是去PORT A 的。。
楼上那个电路图是对的。。
如果可以的话,请帮忙看看那 Program 有没有问题,
电路图应该是没有问题的了。。

你的Program都没有LCD的Coding。
你的LCD怎样接去PortA?请放电路。(6条线,勉强可以,但要注意A4是open drain)
回复

使用道具 举报

 楼主| 发表于 11-3-2007 02:32 PM | 显示全部楼层
原帖由 pic 于 11-3-2007 01:40 PM 发表

你的Program都没有LCD的Coding。
你的LCD怎样接去PortA?请放电路。(6条线,勉强可以,但要注意A4是open drain)


什么是 open drain??
这是我第一次用 PIC16f877a 以前是都用 pic16f84a 的。



那 RA4 要怎么用,如果我用 RA4 当成input 会比较好吗??
我可以把 KEYPAD 用的 PIN 和 RA4 掉换。。
回复

使用道具 举报

发表于 11-3-2007 05:45 PM | 显示全部楼层
原帖由 nikel 于 11-3-2007 02:32 PM 发表
什么是 open drain??
这是我第一次用 PIC16f877a 以前是都用 pic16f84a 的。

那 RA4 要怎么用,如果我用 RA4 当成input ...

Open Drain 就像Transistor 的Open Collector 那样。
做I/O的话, 它需要pull high resistor,不然A4只会Low, 不会变High。
回复

使用道具 举报

 楼主| 发表于 11-3-2007 07:05 PM | 显示全部楼层
原帖由 pic 于 11-3-2007 05:45 PM 发表

Open Drain 就像Transistor 的Open Collector 那样。
做I/O的话, 它需要pull high resistor,不然A4只会Low, 不会变High。


那还有哪一个 PIN 是 Open Drain 的??
那没关系。我把 RA4 换成input port.(key pad) 我有放pull high resistor 的。。
回复

使用道具 举报

发表于 12-3-2007 12:28 AM | 显示全部楼层

回复 #13 nikel 的帖子

没有了。RA4是一个“catch-cha”(陷阱),很多初学者都会重招的,包括我,如你不知道的话,做到你“孝”!

你就加上拉电阻(Pull high resistor)在RA4好了。
回复

使用道具 举报

 楼主| 发表于 19-3-2007 10:47 AM | 显示全部楼层
请问 bit test 可不可以一次过 test 三或四个pin..
象这样。

btfsc PORTA, 1, 2, 3 ,4
call  XXXX
call YYY
回复

使用道具 举报

发表于 21-3-2007 09:31 AM | 显示全部楼层
我建议当你开始用你的PIC 时, 你应该写一个简单的Program 来test 你的所有的PORT (用LED来test)。

就是说要make sure 你每一个port 都能用。 就像 RA4 一样。 还有一个是 pin36 (RB3)也是不能用的 (要去改 LVP bits inside the Configuration word(2007h)

不要一开始就写program. 不同的PIC 有不同的 initialise code. 就像 PIC16F877, PORTA可以是 Analog 或 Digital。 (从你的code里, 你已经把它换成digital了。)

还有, 我想问你是不是在做 Diploma Final YearProject? IICP student???
如果是, 那我就是你的senior!
哈哈!! 
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 22-3-2007 12:21 AM | 显示全部楼层
原帖由 kevin_obl 于 21-3-2007 09:31 AM 发表
我建议当你开始用你的PIC 时, 你应该写一个简单的Program 来test 你的所有的PORT (用LED来test)。

就是说要make sure 你每一个port 都能用。 就像 RA4 ...


RB3 是不是 把 LVP set 去 off 就能用了, 至于RA0-RA3 我换去 digital 了还是不用来get input.

IICP 是什么学校, 对这是我的Final Year Project不过是degree 的。
因为我是这大学的第一批电脑工程系的学生,教授都不知道要教什么,有些甚至不会教,
我们可以说都是自己学的。。
忘了说, 我是沙巴大学电脑工程系的学生。
回复

使用道具 举报

发表于 22-3-2007 07:39 AM | 显示全部楼层

回复 #17 nikel 的帖子

建议你还是用CCS C吧。。。可以缩短开发时间。。。
不会可以学。。。
回复

使用道具 举报

 楼主| 发表于 22-3-2007 10:12 AM | 显示全部楼层
原帖由 pic 于 22-3-2007 07:39 AM 发表
建议你还是用CCS C吧。。。可以缩短开发时间。。。
不会可以学。。。


你是说用 C 来写coding 吗??
当初教授教时根本没提到可以用 C 来写。
到做要开始写的时候已经迟了。。
忙完这一次的 PROJECT 后会试着自己学。。
回复

使用道具 举报

发表于 22-3-2007 10:40 AM | 显示全部楼层

回复 #19 nikel 的帖子

不会迟的,C 很容易上手。像你上面的,我在半小时就可以用C code完成Keypad,LCD 的部分。

你出社会工作,只会ASM的话,我还不请你呢。。。
就好像你只会笔算,不会利用计算机。。。

当初教授教时根本没提到可以用 C 来写,是要你打好基础而已。。。(或教授也不会C
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


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

GMT+8, 20-5-2024 07:16 AM , Processed in 0.067498 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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