91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

PIC877A單片機(jī)MOVF f, d 這個(gè)指令在d=1的情況下有什么用途?

PIC877A單片機(jī)MOVF f, d 這個(gè)指令在d=1的情況下有什么用途?
全部回復(fù)(34)
正序查看
倒序查看
ningsane
LV.4
2
2005-12-06 15:07
d指定了f寄存器中的數(shù)據(jù)的存放位置,如果d=1,那么寄存器f中的數(shù)據(jù)就存放在自身f寄存器中(會(huì)影響標(biāo)示位),如果d=0那么數(shù)據(jù)就存放在W寄存器中.
0
回復(fù)
ucc2800
LV.7
3
2005-12-06 16:49
@ningsane
d指定了f寄存器中的數(shù)據(jù)的存放位置,如果d=1,那么寄存器f中的數(shù)據(jù)就存放在自身f寄存器中(會(huì)影響標(biāo)示位),如果d=0那么數(shù)據(jù)就存放在W寄存器中.
movf f,1這個(gè)命令的用途就是僅僅影響標(biāo)志位嗎?
0
回復(fù)
ningsane
LV.4
4
2005-12-07 11:18
@ucc2800
movff,1這個(gè)命令的用途就是僅僅影響標(biāo)志位嗎?
在movf f,d中,d可以省略,這時(shí)系統(tǒng)的d值確省為1,因此數(shù)據(jù)到底要放在f中還是W中,要自己考慮的.一般來說,d的主要作用是用來指定存儲(chǔ)位置的
0
回復(fù)
ucc2800
LV.7
5
2005-12-07 11:49
@ningsane
在movff,d中,d可以省略,這時(shí)系統(tǒng)的d值確省為1,因此數(shù)據(jù)到底要放在f中還是W中,要自己考慮的.一般來說,d的主要作用是用來指定存儲(chǔ)位置的
好的,謝謝你啊
是不是編寫程序時(shí)這個(gè)值可以用一個(gè)變量來代替,比如F,而不賦予任何值給它?
0
回復(fù)
ningsane
LV.4
6
2005-12-07 12:26
@ucc2800
好的,謝謝你啊是不是編寫程序時(shí)這個(gè)值可以用一個(gè)變量來代替,比如F,而不賦予任何值給它?
不是太明白你說的意思,movf f,d中,d的值只能是1或0,一般在介紹指令系統(tǒng)中這樣寫,一般在具體程序中寫1或0,如果非要寫字母d,那么要對d具體賦值,實(shí)際是一樣的,這樣還不如直接寫1或0省事,
0
回復(fù)
ucc2800
LV.7
7
2005-12-07 14:25
@ningsane
不是太明白你說的意思,movff,d中,d的值只能是1或0,一般在介紹指令系統(tǒng)中這樣寫,一般在具體程序中寫1或0,如果非要寫字母d,那么要對d具體賦值,實(shí)際是一樣的,這樣還不如直接寫1或0省事,
我這兩天在學(xué)習(xí)PIC編程
在程序中老發(fā)現(xiàn)這樣的語句:
rlf PORTD,F
decfsz delay1,F
xorwf NN,F
rlf NN,W
等等.
F,W在程序中都沒有定義,不知道這樣寫的目的是何用意?
0
回復(fù)
ningsane
LV.4
8
2005-12-07 14:30
@ucc2800
我這兩天在學(xué)習(xí)PIC編程在程序中老發(fā)現(xiàn)這樣的語句:rlfPORTD,Fdecfszdelay1,FxorwfNN,FrlfNN,W等等.F,W在程序中都沒有定義,不知道這樣寫的目的是何用意?
f要么是0,要么是1,和上面d的作用是完全一樣的,只是字母不同,意義一樣的,
0
回復(fù)
ucc2800
LV.7
9
2005-12-07 14:49
@ningsane
f要么是0,要么是1,和上面d的作用是完全一樣的,只是字母不同,意義一樣的,
我知道了,是程序不對,程序上是寫的F,但是沒有對F賦值,肯定是樹上寫錯(cuò)了,誤導(dǎo)我.汗

還有一個(gè)延時(shí)程序也有問題,我給你寫出來看看:
...
Delay1 equ 20H
Delay2 equ 21H
...

DELAY
    movlw 05FH
    movwf Delay1
    clrf  Delay2
DelayLoop
    decfsz Delay2,F
    goto   DelayLoop
    decfsz Delay1,F
    goto   DelayLoop
    return

    end

是不是這個(gè)延時(shí)程序是錯(cuò)誤的,為什么要把delay2清零?是不是還要在DelayLoop得程序中加入一句給Delay2賦初值?
0
回復(fù)
ningsane
LV.4
10
2005-12-07 14:59
@ucc2800
我知道了,是程序不對,程序上是寫的F,但是沒有對F賦值,肯定是樹上寫錯(cuò)了,誤導(dǎo)我.汗還有一個(gè)延時(shí)程序也有問題,我給你寫出來看看:...Delay1equ20HDelay2equ21H...DELAY    movlw05FH    movwfDelay1    clrf  Delay2DelayLoop    decfszDelay2,F    goto  DelayLoop    decfszDelay1,F    goto  DelayLoop    return    end是不是這個(gè)延時(shí)程序是錯(cuò)誤的,為什么要把delay2清零?是不是還要在DelayLoop得程序中加入一句給Delay2賦初值?
程序應(yīng)該是對的,具體你編譯一下,應(yīng)該是可以通過的,DelayLoop不需要必須對Delay2賦值,你可以在執(zhí)行中查看一下寄存器的值,無論Delay2值是多少,減1運(yùn)算到0后又開始從255開始循環(huán),這樣循環(huán)嵌套,可以用很少的指令實(shí)現(xiàn)比較長的延時(shí).如果需要精確的延時(shí)時(shí)間,這時(shí)候就要對Delay1,Delay2賦值了,具體是多少,要從WATCH中具體執(zhí)行一下看看,多試幾次,哪兩個(gè)數(shù)據(jù)最接近,就采用哪兩個(gè).
0
回復(fù)
ucc2800
LV.7
11
2005-12-07 15:20
@ningsane
程序應(yīng)該是對的,具體你編譯一下,應(yīng)該是可以通過的,DelayLoop不需要必須對Delay2賦值,你可以在執(zhí)行中查看一下寄存器的值,無論Delay2值是多少,減1運(yùn)算到0后又開始從255開始循環(huán),這樣循環(huán)嵌套,可以用很少的指令實(shí)現(xiàn)比較長的延時(shí).如果需要精確的延時(shí)時(shí)間,這時(shí)候就要對Delay1,Delay2賦值了,具體是多少,要從WATCH中具體執(zhí)行一下看看,多試幾次,哪兩個(gè)數(shù)據(jù)最接近,就采用哪兩個(gè).
子程序中為什么 要用F呢,為什么不寫成 1 或者 0,這樣可以嗎?
0
回復(fù)
ningsane
LV.4
12
2005-12-07 15:26
@ucc2800
子程序中為什么要用F呢,為什么不寫成1或者0,這樣可以嗎?
你可以在程序的其他地方找到f的值,在包含文件include<>呢,一般的f=1,w=0,
0
回復(fù)
ucc2800
LV.7
13
2005-12-07 15:32
@ningsane
你可以在程序的其他地方找到f的值,在包含文件include呢,一般的f=1,w=0,
哦,書上也沒給我說,害我琢磨老半天就是理解不了,聽你這么一說,突然間明白了,謝謝啊.
還有p16f877a.inc這個(gè)文件是默認(rèn)的還是自己定義制作的?
呵呵,我是剛學(xué),你要有耐心啊
0
回復(fù)
ningsane
LV.4
14
2005-12-07 15:47
@ucc2800
哦,書上也沒給我說,害我琢磨老半天就是理解不了,聽你這么一說,突然間明白了,謝謝啊.還有p16f877a.inc這個(gè)文件是默認(rèn)的還是自己定義制作的?呵呵,我是剛學(xué),你要有耐心啊
你可以自己往里面添加定義,*.INC文件是文本方式的,可以自己用寫字板打開,一看就都明白了
0
回復(fù)
ucc2800
LV.7
15
2005-12-07 15:52
@ningsane
你可以自己往里面添加定義,*.INC文件是文本方式的,可以自己用寫字板打開,一看就都明白了
好的,真的很感激你,再次謝謝啊,以后我碰到的問題會(huì)更多,還需要你多多指點(diǎn).我以前學(xué)的51,現(xiàn)在學(xué)習(xí)PIC,剛開始學(xué)^_^
0
回復(fù)
ucc2800
LV.7
16
2005-12-08 09:16
@ningsane
在movff,d中,d可以省略,這時(shí)系統(tǒng)的d值確省為1,因此數(shù)據(jù)到底要放在f中還是W中,要自己考慮的.一般來說,d的主要作用是用來指定存儲(chǔ)位置的
在movf f,d中,d可以省略,這時(shí)系統(tǒng)的d值確省為1.

是不是其他的指令只要有省略0或者1的,缺省值都是1??
0
回復(fù)
ningsane
LV.4
17
2005-12-08 11:49
@ucc2800
在movff,d中,d可以省略,這時(shí)系統(tǒng)的d值確省為1.是不是其他的指令只要有省略0或者1的,缺省值都是1??
是的,如果寫成了movf f,  命令也是對的,這時(shí)確省它為1,數(shù)據(jù)存放到f中,和f=1的效果是一樣的,對其他的命令也是一樣的
0
回復(fù)
ucc2800
LV.7
18
2005-12-08 12:35
@ningsane
是的,如果寫成了movff,  命令也是對的,這時(shí)確省它為1,數(shù)據(jù)存放到f中,和f=1的效果是一樣的,對其他的命令也是一樣的
謝謝啊,收獲很多!
還有,我今天在一個(gè)程序里碰到了banksel這個(gè)東西?這是什么玩意?從來沒有見過啊.它是不是又是在include文件里呢,具體什么意思啊?有什么作用?繼續(xù)指點(diǎn)啊,嘿嘿.
0
回復(fù)
ningsane
LV.4
19
2005-12-08 13:00
@ucc2800
謝謝啊,收獲很多!還有,我今天在一個(gè)程序里碰到了banksel這個(gè)東西?這是什么玩意?從來沒有見過啊.它是不是又是在include文件里呢,具體什么意思啊?有什么作用?繼續(xù)指點(diǎn)啊,嘿嘿.
banksel 是一個(gè)比較的命令,  一般修改bank用這樣的兩條指令
     BSF STATUS,RPO
     BCF  STATUS,RP1
具體是1,還是0看自己的實(shí)際位置,自己要知道實(shí)際的BANK.用banksel就省事多了,banksel f,一個(gè)指令就設(shè)定了f所在的BANK了,用這一個(gè)指令就可以替代上面的兩條指令,還省去了計(jì)算f寄存器實(shí)際的BANK 的麻煩呢
0
回復(fù)
ucc2800
LV.7
20
2005-12-08 13:15
@ningsane
banksel是一個(gè)比較的命令,  一般修改bank用這樣的兩條指令    BSFSTATUS,RPO    BCF  STATUS,RP1具體是1,還是0看自己的實(shí)際位置,自己要知道實(shí)際的BANK.用banksel就省事多了,bankself,一個(gè)指令就設(shè)定了f所在的BANK了,用這一個(gè)指令就可以替代上面的兩條指令,還省去了計(jì)算f寄存器實(shí)際的BANK的麻煩呢
謝謝啊,我明白了一部分.但還有兩個(gè)問題:

1.這是一個(gè)指令嗎?為什么指令命令里沒有這個(gè)?
2.如果不是指令,它需要定義或者聲明嗎?在哪個(gè)地方?

下面有一些語句,你可以解釋一下給我好嗎?
banksel    PORTD

banksel    TRISD

banksel    ADCON1

banksel    INTCON
0
回復(fù)
ningsane
LV.4
21
2005-12-08 14:37
@ucc2800
謝謝啊,我明白了一部分.但還有兩個(gè)問題:1.這是一個(gè)指令嗎?為什么指令命令里沒有這個(gè)?2.如果不是指令,它需要定義或者聲明嗎?在哪個(gè)地方?下面有一些語句,你可以解釋一下給我好嗎?banksel    PORTDbanksel    TRISDbanksel    ADCON1banksel    INTCON
這是個(gè)指令,你找原來比較早些的書上一般都有介紹,
第一行banksel PORTD 等同于BCF STATUS,RP1,
                         BCF STATUS,RP0,
PORTD 位于第一BANK

第二行banksel TRISD 等同于BCF STATUS,RP1,
                         BSF STATUS,RP0,
TRISD位于第三BANK
下面的兩個(gè)是一樣的道理.
你可以體會(huì)一下這兩中方法的不同用法和好處
0
回復(fù)
ucc2800
LV.7
22
2005-12-08 15:06
@ningsane
這是個(gè)指令,你找原來比較早些的書上一般都有介紹,第一行bankselPORTD等同于BCFSTATUS,RP1,                        BCFSTATUS,RP0,PORTD位于第一BANK第二行bankselTRISD等同于BCFSTATUS,RP1,                        BSFSTATUS,RP0,TRISD位于第三BANK下面的兩個(gè)是一樣的道理.你可以體會(huì)一下這兩中方法的不同用法和好處
我明白了
但是
PORTD:在Bank 0(第一個(gè))
TRISD:在Bank 1(第二個(gè)),而你說的是位于第三個(gè)
ADCON1:在Bank 1(第二個(gè))
INTCON:四個(gè)Bank都有,該怎么辦?具體指到哪一個(gè)?

再有耐心一點(diǎn)點(diǎn),這個(gè)問題快解決了啊
我用的芯片是PIC16F877A
0
回復(fù)
ningsane
LV.4
23
2005-12-08 15:16
@ucc2800
我明白了但是PORTD:在Bank0(第一個(gè))TRISD:在Bank1(第二個(gè)),而你說的是位于第三個(gè)ADCON1:在Bank1(第二個(gè))INTCON:四個(gè)Bank都有,該怎么辦?具體指到哪一個(gè)?再有耐心一點(diǎn)點(diǎn),這個(gè)問題快解決了啊我用的芯片是PIC16F877A
用哪個(gè)BANK中的寄存器BANK是經(jīng)常要改變的,你寫的那四個(gè)語句一般不會(huì)在一起用的,如果在一起的話就是最后一個(gè),就是先轉(zhuǎn)到BANK1,再到BANK2,第三個(gè)再轉(zhuǎn)到BANK2,其實(shí)不變,最后轉(zhuǎn)到BANK4,還是按照程序執(zhí)行順序來的
0
回復(fù)
ucc2800
LV.7
24
2005-12-08 15:35
@ningsane
用哪個(gè)BANK中的寄存器BANK是經(jīng)常要改變的,你寫的那四個(gè)語句一般不會(huì)在一起用的,如果在一起的話就是最后一個(gè),就是先轉(zhuǎn)到BANK1,再到BANK2,第三個(gè)再轉(zhuǎn)到BANK2,其實(shí)不變,最后轉(zhuǎn)到BANK4,還是按照程序執(zhí)行順序來的
在Bank 0, Bank 1, Bank 2, Bank 3四個(gè)存儲(chǔ)體中都有一個(gè)INTCON寄存器,如果出現(xiàn)這條命令banksel INTCON,那么目前的存儲(chǔ)體應(yīng)該是哪個(gè)?
0
回復(fù)
ningsane
LV.4
25
2005-12-08 15:59
@ucc2800
在Bank0,Bank1,Bank2,Bank3四個(gè)存儲(chǔ)體中都有一個(gè)INTCON寄存器,如果出現(xiàn)這條命令bankselINTCON,那么目前的存儲(chǔ)體應(yīng)該是哪個(gè)?
一般改變BANK沒有選擇INTCON的,你用這個(gè)指令只能用唯一存在的寄存器,確定了某個(gè)寄存器,必須它所在的BANK是確定的,這樣才能用這個(gè)指令
0
回復(fù)
ucc2800
LV.7
26
2005-12-08 16:19
@ningsane
一般改變BANK沒有選擇INTCON的,你用這個(gè)指令只能用唯一存在的寄存器,確定了某個(gè)寄存器,必須它所在的BANK是確定的,這樣才能用這個(gè)指令
一個(gè)初始化程序:
Initial
  banksel    TRISD
  clrf             TRISD
  banksel    PORTD
  clrf             PORTD
  banksel    PIE1
  bsf              PIE1,ADIE
  bsf              TRISA,0
  banksel    ADCON1
  movlw       B'00000000'
  movwf       ADCON1
  banksel    ADCON0
  movlw       B'00000001'
  movwf       ADCON0
  banksel    INTCON
  bsf              INTCON,GIE
  bsf              INTCON,PEIE
  bsf              ADCON0,2
  return
0
回復(fù)
ningsane
LV.4
27
2005-12-08 16:22
@ucc2800
一個(gè)初始化程序:Initial  banksel    TRISD  clrf            TRISD  banksel    PORTD  clrf            PORTD  banksel    PIE1  bsf              PIE1,ADIE  bsf              TRISA,0  banksel    ADCON1  movlw      B'00000000'  movwf      ADCON1  banksel    ADCON0  movlw      B'00000001'  movwf      ADCON0  banksel    INTCON  bsf              INTCON,GIE  bsf              INTCON,PEIE  bsf              ADCON0,2  return
你把該程序執(zhí)行一下,看PC實(shí)際在哪里呢
0
回復(fù)
ucc2800
LV.7
28
2005-12-08 16:28
@ningsane
你把該程序執(zhí)行一下,看PC實(shí)際在哪里呢
用什么軟件調(diào)試?我還沒有安裝過,這兩天才開始學(xué),今天剛看完一本書.從明天開始研究細(xì)節(jié)方面.還有我準(zhǔn)備買一個(gè)開發(fā)板,編程器我已經(jīng)有了.
0
回復(fù)
ningsane
LV.4
29
2005-12-14 15:26
@ucc2800
用什么軟件調(diào)試?我還沒有安裝過,這兩天才開始學(xué),今天剛看完一本書.從明天開始研究細(xì)節(jié)方面.還有我準(zhǔn)備買一個(gè)開發(fā)板,編程器我已經(jīng)有了.
現(xiàn)在開發(fā)環(huán)境有了么?有編程器就自己作個(gè)板子,便宜多了,
0
回復(fù)
ucc2800
LV.7
30
2005-12-15 09:58
@ningsane
現(xiàn)在開發(fā)環(huán)境有了么?有編程器就自己作個(gè)板子,便宜多了,
不好買零件啊,板子也很貴,想了想還是買劃算一點(diǎn)
開發(fā)環(huán)境我是從微芯網(wǎng)站上下載的
什么maltab v7.22
0
回復(fù)
picczzz
LV.2
31
2005-12-20 19:49
用c語言吧,會(huì)提高很大效率.給你個(gè)免費(fèi)軟件下載點(diǎn)http://www.pic16.com/jszl/jszl.htm
0
回復(fù)
發(fā)
主站蜘蛛池模板: 海阳市| 永春县| 囊谦县| 洛南县| 阜康市| 钦州市| 贵定县| 林甸县| 大理市| 阳曲县| 株洲市| 安阳县| 周口市| 钟山县| 恩施市| 含山县| 长泰县| 巍山| 金昌市| 弥渡县| 三都| 伊宁市| 北辰区| 上饶市| 马公市| 安化县| 丽水市| 桓台县| 兴城市| 南靖县| 宣武区| 新闻| 昂仁县| 共和县| 元阳县| 当阳市| 罗平县| 巴里| 崇文区| 鄂托克前旗| 天峨县|