大家好,我是單片機的愛好者,正在學(xué)習(xí)PIC的單片機,在學(xué)習(xí)中遇到一些問題,希望大家不吝賜教.謝謝大家!
同時希望能與和我一樣的初學(xué)者共同進步.
再次感謝!
PIC單片機學(xué)習(xí)提問,望高手解答
全部回復(fù)(14)
正序查看
倒序查看
我學(xué)習(xí)的一本書上的有一個程序的開頭是這樣定義的:
1: tmr0 equ 01h
2: pcl equ 02h
3: status equ 03h
4: option_reg equ 81h
5: intcon equ 0bh
......
8: tmr0b equ 6
9: count equ 20h
10: rp0 equ 5h
......
以上都是定義寄存器的,比如第一句,就是定義地址是01h的寄存器取個代號為tmr0,如此類推.
在此我請問大家,第8句是什么意思,因為后面的6不是代表地址的,實際上書上說是為定時器賦初始值為6,就是從6開始計時.
請大家指教!! (同理第10句也是同樣的問題)
1: tmr0 equ 01h
2: pcl equ 02h
3: status equ 03h
4: option_reg equ 81h
5: intcon equ 0bh
......
8: tmr0b equ 6
9: count equ 20h
10: rp0 equ 5h
......
以上都是定義寄存器的,比如第一句,就是定義地址是01h的寄存器取個代號為tmr0,如此類推.
在此我請問大家,第8句是什么意思,因為后面的6不是代表地址的,實際上書上說是為定時器賦初始值為6,就是從6開始計時.
請大家指教!! (同理第10句也是同樣的問題)
0
回復(fù)
@pro-power
我學(xué)習(xí)的一本書上的有一個程序的開頭是這樣定義的:1: tmr0 equ 01h2: pcl equ 02h3: status equ 03h4: option_reg equ 81h5: intcon equ 0bh......8: tmr0b equ 69: count equ 20h10: rp0 equ 5h......以上都是定義寄存器的,比如第一句,就是定義地址是01h的寄存器取個代號為tmr0,如此類推.在此我請問大家,第8句是什么意思,因為后面的6不是代表地址的,實際上書上說是為定時器賦初始值為6,就是從6開始計時.請大家指教!!(同理第10句也是同樣的問題)
前5句都是定義頭文件的,你應(yīng)該會在相應(yīng)的.H文件中找到,編程的時候可以不管它.直接加一條#INCLUDE《PIC.H》就可以了,用匯編的話把《PIC.H》換成相應(yīng)的型號.
第8句是給TMR0寄存器賦值,從6開始記數(shù)或者定時.第9句是定義變量count的位置.第10句和1——5句是一樣的,都是定義寄存器,相當于頭文件.
這些都是很簡單的東西.光看書是不行的,下個編譯器自己敲程序什么都明白了.
另外單純的MCU問題建議去其他網(wǎng)站,這個網(wǎng)站好象就這些問題回答較少.
www.pic16.com可能會好些
第8句是給TMR0寄存器賦值,從6開始記數(shù)或者定時.第9句是定義變量count的位置.第10句和1——5句是一樣的,都是定義寄存器,相當于頭文件.
這些都是很簡單的東西.光看書是不行的,下個編譯器自己敲程序什么都明白了.
另外單純的MCU問題建議去其他網(wǎng)站,這個網(wǎng)站好象就這些問題回答較少.
www.pic16.com可能會好些
0
回復(fù)
@pro-power
我學(xué)習(xí)的一本書上的有一個程序的開頭是這樣定義的:1: tmr0 equ 01h2: pcl equ 02h3: status equ 03h4: option_reg equ 81h5: intcon equ 0bh......8: tmr0b equ 69: count equ 20h10: rp0 equ 5h......以上都是定義寄存器的,比如第一句,就是定義地址是01h的寄存器取個代號為tmr0,如此類推.在此我請問大家,第8句是什么意思,因為后面的6不是代表地址的,實際上書上說是為定時器賦初始值為6,就是從6開始計時.請大家指教!!(同理第10句也是同樣的問題)
謝謝大家的解答,我把我看的一本書《pic單片機實用教程-基礎(chǔ)篇》上傳給大家,希望對大家有幫助.
68471226830175.part1.rar
68471226830235.part2.rar
68471226830175.part1.rar
68471226830235.part2.rar
0
回復(fù)
@xiongls
前5句都是定義頭文件的,你應(yīng)該會在相應(yīng)的.H文件中找到,編程的時候可以不管它.直接加一條#INCLUDE《PIC.H》就可以了,用匯編的話把《PIC.H》換成相應(yīng)的型號.第8句是給TMR0寄存器賦值,從6開始記數(shù)或者定時.第9句是定義變量count的位置.第10句和1——5句是一樣的,都是定義寄存器,相當于頭文件.這些都是很簡單的東西.光看書是不行的,下個編譯器自己敲程序什么都明白了.另外單純的MCU問題建議去其他網(wǎng)站,這個網(wǎng)站好象就這些問題回答較少.www.pic16.com可能會好些
請教高手,紅外線遙控接收的程序是怎么寫啊,能給個思路嗎?下圖是我繪制的紅外接收頭輸出端的波形
500) {this.resized=true; this.width=500; this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/71/68471226830772.jpg');}" onmousewheel="return imgzoom(this);">

0
回復(fù)
@pro-power
我學(xué)習(xí)的一本書上的有一個程序的開頭是這樣定義的:1: tmr0 equ 01h2: pcl equ 02h3: status equ 03h4: option_reg equ 81h5: intcon equ 0bh......8: tmr0b equ 69: count equ 20h10: rp0 equ 5h......以上都是定義寄存器的,比如第一句,就是定義地址是01h的寄存器取個代號為tmr0,如此類推.在此我請問大家,第8句是什么意思,因為后面的6不是代表地址的,實際上書上說是為定時器賦初始值為6,就是從6開始計時.請大家指教!!(同理第10句也是同樣的問題)
俺下面說的是51系列單片機的,不知與你這個一樣不一樣.
這個equ不一定要定義寄存器,有點類似一般程序語言中的 字符串常量賦值.
equ前面的就是字符串常量名,后面的是字符串.
這樣定義后,在這個程序中,前面的就等同于后面的,比如說你那個第8行,編譯時編譯程序見到“tmr0b”這個詞就用“6”代替,
比如說在我的51匯編程序中定義了你的第8行:
MOV a,#tmr0b 等同于 MOV a,#6
使用equ的好處之一是,如果你的程序中有某個數(shù)值或寄存器要在多處統(tǒng)一修改時(不是運行中修改,是編程時修改),用了它可以在程序頭改一處就行了,不必到程序中一處處去找.
這個equ不一定要定義寄存器,有點類似一般程序語言中的 字符串常量賦值.
equ前面的就是字符串常量名,后面的是字符串.
這樣定義后,在這個程序中,前面的就等同于后面的,比如說你那個第8行,編譯時編譯程序見到“tmr0b”這個詞就用“6”代替,
比如說在我的51匯編程序中定義了你的第8行:
MOV a,#tmr0b 等同于 MOV a,#6
使用equ的好處之一是,如果你的程序中有某個數(shù)值或寄存器要在多處統(tǒng)一修改時(不是運行中修改,是編程時修改),用了它可以在程序頭改一處就行了,不必到程序中一處處去找.
0
回復(fù)
@pro-power
請教高手,紅外線遙控接收的程序是怎么寫啊,能給個思路嗎?下圖是我繪制的紅外接收頭輸出端的波形[圖片]500){this.resized=true;this.width=500;this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/71/68471226830772.jpg');}"onmousewheel="returnimgzoom(this);">
這是否有編碼,編碼規(guī)則?
0
回復(fù)
@njyd
俺下面說的是51系列單片機的,不知與你這個一樣不一樣. 這個equ不一定要定義寄存器,有點類似一般程序語言中的字符串常量賦值. equ前面的就是字符串常量名,后面的是字符串. 這樣定義后,在這個程序中,前面的就等同于后面的,比如說你那個第8行,編譯時編譯程序見到“tmr0b”這個詞就用“6”代替, 比如說在我的51匯編程序中定義了你的第8行: MOVa,#tmr0b等同于MOVa,#6 使用equ的好處之一是,如果你的程序中有某個數(shù)值或寄存器要在多處統(tǒng)一修改時(不是運行中修改,是編程時修改),用了它可以在程序頭改一處就行了,不必到程序中一處處去找.
是的,我現(xiàn)在也搞懂了,謝謝指教
0
回復(fù)
@xiongls
前5句都是定義頭文件的,你應(yīng)該會在相應(yīng)的.H文件中找到,編程的時候可以不管它.直接加一條#INCLUDE《PIC.H》就可以了,用匯編的話把《PIC.H》換成相應(yīng)的型號.第8句是給TMR0寄存器賦值,從6開始記數(shù)或者定時.第9句是定義變量count的位置.第10句和1——5句是一樣的,都是定義寄存器,相當于頭文件.這些都是很簡單的東西.光看書是不行的,下個編譯器自己敲程序什么都明白了.另外單純的MCU問題建議去其他網(wǎng)站,這個網(wǎng)站好象就這些問題回答較少.www.pic16.com可能會好些
真是暈,EQU怎么是賦值的助記符了呢
EQU等同于C中的#defule tmr0b 6
就是說以后定時器用到6的時候就不用寫6了,直接寫tmr0b就可以了,這樣直觀一點.
EQU等同于C中的#defule tmr0b 6
就是說以后定時器用到6的時候就不用寫6了,直接寫tmr0b就可以了,這樣直觀一點.
0
回復(fù)