|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
急,請幫忙 |
| 作者:king99112 欄目:單片機 |
我是新手,碰到了很麻煩,請大家?guī)蛶兔?br> LIST P=16F877 #INCLUDE "P16F877.INC" STATUS equ 0x03 TRISA equ 0x85 PORTA equ 0x05 PORTC equ 0x07 TRISC equ 0x87 DATA_OLD equ 0X18 ADCON0 equ 0X1F adcon1 equ 0X9F adresh equ 0X1E adresl equ 0x9E ACCBH equ 0x08 ACCBL equ 0x09 ACCAH equ 0x0A ACCAL equ 0x0B ORG 0X00 nop GOTO MAIN ORG 0X10 MAIN NOP call INITPORTS goto INITREG INITPORTS BSF STATUS,RP0 BCF STATUS,RP1 CLRF TRISA MOVLW 01H MOVWF TRISA BCF 3,RP0 CLRF PORTA CLRF PORTC return INITREG BCF STATUS,RP0 CLRF DATA_OLD NOP AD CLRF ADCON0 MOVLW 0xC1 MOVWF ADCON0 CLRF adresh BSF 3,RP0 CLRF adcon1 CLRF adresl MOVLW 0x0E MOVWF ADCON1 BCF 3,RP0 MOVLW 0X5 MOVWF 10 DELAY_1 clrwdt DECFSZ 10,1 goto DELAY_1 BSF ADCON0,GO DELAY_2 btfss PIR1,ADIF GOTO DELAY_2 banksel PORTC clrf PORTC BSF 3,RP0 clrf TRISC BCF 3,RP0 CLRF ACCAL MOVF adresh,0 MOVWF PORTC MOVWF ACCAH :這兒的高兩位不能存 NOP :這兒寄存器ACCAH會變?yōu)榱?br> BSF STATUS,5 banksel adresl MOVF adresl ,0 CLRF ACCAL MOVWF ACCAL BCF STATUS,5 MOVLW 0X85 MOVWF ACCBL MOVLW 0X02 MOVWF ACCBH :這兒存不了數(shù)據 上面是我在做模數(shù)轉換是碰到的問題,請幫忙 |
| 2樓: | >>參與討論 |
| 作者: king99112 于 2003/5/25 12:38:00 發(fā)布:
怎么沒人能解決嗎,還是我的問題太容易了 真的請各位能幫忙啊 |
|
| 3樓: | >>參與討論 |
| 作者: king99112 于 2003/5/26 22:50:00 發(fā)布:
謝了,斑竹 我是新手,所以請班主多原諒我的錯誤 一開始我一直以為都可以亂定義的,后來實踐中發(fā)現(xiàn)變量應該不能定義在前0X20的地址里面,不知道是不是怎么回事啊 請斑竹多多幫助,謝謝了 |
|
| 4樓: | >>參與討論 |
| 作者: 張明峰 于 2003/5/27 11:59:00 發(fā)布:
對了 bank0的0x00-0x1f單元是特殊功能寄存器,有專門用圖。其他bank中也有特殊功能寄存器。用戶的自定義變量不能和特殊功能寄存器沖突。 |
|
| 5樓: | >>參與討論 |
| 作者: delta_sun 于 2003/5/27 15:29:00 發(fā)布:
獨家提供:告訴你一個用好PIC的好辦法! PIC的特點是指令少,內部RAM地址復雜,系列又多。 你可以從你正在用的芯片DATASHEET內取出寄存器在RAM中的地址映射圖表,排在同一圖形文件內,目的就是做成WINDOWS的桌面墻紙。這樣每天你開機,沒事的時候都面對它,很快就能記住了。 當換用其他芯片時,就再制作其它芯片的墻紙,放在桌面上查信息也方便。 |
|
| 6樓: | >>參與討論 |
| 作者: king99112 于 2003/5/27 22:16:00 發(fā)布:
是啊,我也覺的頭很疼,寄存器特多, 不過現(xiàn)在稍微好了一點,用多了 對了,斑竹,我先問一下,就是假設我定義一個寄存器并給他值,如果它第一次的值跟第二次的值相等時,是不是在程序運行到它第二次的時候不執(zhí)行的。我在仿真的時候發(fā)現(xiàn)它(我上面說的哪個寄存器)不會變紅。 第二個問題就是也成不上問題,就是如果我程序中要用到一個特殊的寄存器例如A/D控制寄存器的一個開啟A/D轉換的位,前面不給這個位定義是不是也可以的? |
|
| 7樓: | >>參與討論 |
| 作者: aliner 于 2003/5/29 16:59:00 發(fā)布:
當然會執(zhí)行,他不變紅是仿真軟件的高明之處! 只有寄存器值變化的時候它才會變紅來提醒你注意,如果值沒有變的時候你當然可以暫時不用關心他了.你當然在用那個寄存器本身有FSR來提示呀! 第二個問題:你不定義位當然可以,其實如果你的記憶力很強的話,那你所有的寄存器都可以不定義,你定義只是為了自己看程序簡單明了! 例如:bsf 0x1f,2 等同于bsf ADCON0,GODONE! |
|
| 8樓: | >>參與討論 |
| 作者: king99112 于 2003/5/29 19:20:00 發(fā)布:
謝謝aliner 老兄,真的很感謝, 謝謝aliner 老兄,真的很感謝! 雖然我的問題很簡單,其實有時我是知道,但是由于我們這邊沒什么人懂 所以有時不敢斷定自己的判斷是不是對,所以要上網來問問 我現(xiàn)在有個問題想問一下,就是我用置位命令來置寄存器所在的存儲體(即置3寄存器的5位)不行,但是用BANKSEL 直接置就可以,不知道怎么回事。 還有能不能留個聯(lián)系方式。∫院笥袉栴}可以請教。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |