; list p=16C74, st=off
; PORTC PIN DESCRIPTION
; SCK bit 3, SDI bit 4, SDO bit 5, CS bit 7
; Fosc = 10.0 MHz, thus each instr. cycle = 400ns
;***************Ram Register Definitions*******************************
rxdata equ 25h
addr equ 26h
loops equ 27h
;***************Bit Definitions****************************************
;#define CS PORTC,7 ; SPI chip select bit definition
;**********************************************************************
;***************25Cxxx command definitions
;#define WREN 6 ;write enable latch
;#define WRDI 4 ;reset the write enable latch
;#define RDSR 5 ;read status register
;#define WRSR 1 ;write status register
;#define READ 3 ;read data from memory
;#define WRITE 2 ;write data to memory
; Bit defines within status register
;#define WIP 0 ;write in progress
;#define WEL 1 ;write enable latch
;#define BP0 2 ;block protection bit
;#define BP1 3 ;block protection bit
;**********************************************************************
; include "p16c74.inc" ; 16C74 include file
; __CONFIG _WDT_OFF & _CP_OFF & _HS_OSC & _PWRTE_ON
;**********************************************************************
page
org 0000 ; Reset Vector
clrf PCLATH ; ensure PCLATH bit 3 is cleared
clrf INTCON ; ensure all interrupts are disabled
goto start ; jump to the beginning of the program
org 004 ; interrupt vector, do nothing
isr: goto isr ; do nothing, location just
; identified in code
;***************BEGIN MAIN PROGRAM*************************************
;
start: bcf STATUS,5 ; need to set bank 0
clrf PORTC ; initialize port c
bsf CS ; make sure cs is set
bsf STATUS,5 ; need to set bank 1
movlw 0x10 ; all bits are outputs except SDI
movwf TRISC ; for SPI setup
bcf STATUS,RP0 ; need to set bank 0
movlw 0x31 ; SPI master, clk/16, ckp=1
movwf SSPCON ; SSPEN enabled
movlw 0x10 ; *** put beginning address in addr**
movwf addr ; for later use
loop
;The first thing we will do is the WREN
call wren ; call the write enable routine
;Next write status reg. to clear the block protect bits
call wrsr ; call the write status routine
;Next do a busy test
call busy_test ; test WIP bit in status register
;Then do the WREN before writing to the array
call wren ; call the write enable command
;Next write 0xA5 (or any other value) to 0x10
bcf CS ; set chip select line low
movlw WRITE ; WRITE control byte
call output ; call the output subroutine
movlw b'00000000' ; high addr byte is all 0's
call output ; call the output subroutine
movf addr,w ; low addr byte
call output ; call the output subroutine
movlw b'10100101' ; load 0xA5 as data to be sent out
call output ; call the output subroutine
bcf SSPCON,CKP ; set clock idle low, mode 0,1
bsf CS ; set chip select, begin write cycle
bsf SSPCON,CKP ; set clock idle high, mode 1,1
call busy_test
call rdsr ; call the read status subroutine
;Now, read location 0x10h and store in rxdata. With Picmaster a
;user can break, read that memory location to see if the read worked
bcf CS ; set chip select line low
movlw READ ; READ control byte
call output ; call the output subroutine
movlw b'00000000' ; high addr byte is all 0's
call output ; call the output subroutine
movf addr,w ; get ready to send next byte
call output ; call the output subroutine
movlw b'01011010' ; move don't care byte of 0x5A into
call output ; call the output subroutine
bsf CS ; bring chip select high end
; terminate read command
;While program is continuously looping, the user may halt (if using an
;emulator), and look at the data in rxdata. If it is 0xA5, the
;read/write worked.
call wait ; little delay between SPI sequence
goto loop ; do it all over again
; loop can be used to evaluate SPI
; signals on oscilloscope
;********************* BEGIN SUBROUTINES*******************************
;*** DELAY ROUTINE - 400uS ***
;
wait movlw .200 ; timing adjustment variable
movwf loops ; move variable into loops
top nop ; sit and wait
nop ; no operation
decfsz loops,f ; loop complete?
goto top ; no, go again
return ; yes, return from sub
;****** This is the OUTPUT transmit/receive subroutine. ***************
output movwf SSPBUF ; place data in buffer to send
loop1 bsf STATUS,RP0 ; specify bank 1
btfss SSPSTAT,BF ; has data been received (xmit done)?
goto loop1 ; not done yet, keep trying
bcf STATUS,RP0 ; specify bank 0
movf SSPBUF,W ; empty receive buffer
movwf rxdata ; put received byte into rxdata
return ; return from subroutine
;*******Write Enable Subroutine****************************************
wren bcf CS ; set chip select line low
movlw WREN ; WREN control byte
call output ; Call the output subroutine
bcf SSPCON,CKP ; set clock idle low, mode 0,1
bsf CS ; set chip select, begin write
bsf SSPCON,CKP ; set clock idle high, mode 1,1
return ; return from subroutine
;*******Read Status Register Subroutine********************************
rdsr movlw RDSR ; RDSR control byte
call output ; Call the output subroutine
movlw b'00000101' ; this byte is a don't care byte
call output ; status reg data will be in rxdata
bsf CS ; set chip select
return ; return from subroutine
;*******Write Status Register Subroutine*******************************
wrsr bcf CS ; set chip select line low
movlw WRSR ; WRSR control byte
call output ; Call the output subroutine
movlw b'00001000' ; set BP1 bit in status register
call output ; this will clear block protect bits
bcf SSPCON,CKP ; set clock idle low, mode 0,1
bsf CS ; set chip select
bsf SSPCON,CKP ; set clock idle high, mode 1,1
return ; return from subroutine
;*******Busy Test - WIP bit in Status Register*************************
busy_test
bcf CS ; set chip select line low
movlw RDSR ; RDSR control byte
call output ; Call the output subroutine
movlw b'00000000' ; send dummy byte
call output ; to initiate clock sequence for read
bsf CS ; else, set chip select high
btfsc rxdata,WIP ; test WIP bit read from status register
goto busy_test ; repeat busy test
return ; return from subroutine
end
上一篇:PIC單片機(jī)定時器中斷源程序
下一篇:PIC16C63單片機(jī)串口通信程序
推薦閱讀
史海拾趣
進(jìn)入21世紀(jì)后,Heatron公司開始積極尋求國際合作機(jī)會,以進(jìn)一步拓展其全球業(yè)務(wù)。公司先后與多個國家的知名企業(yè)建立了戰(zhàn)略伙伴關(guān)系,共同開發(fā)新產(chǎn)品、新技術(shù)。通過資源共享和市場互補(bǔ),Heatron不僅成功進(jìn)入了多個新興市場,還顯著提升了其品牌在國際市場上的知名度和影響力。
進(jìn)入21世紀(jì)后,Heatron公司開始積極尋求國際合作機(jī)會,以進(jìn)一步拓展其全球業(yè)務(wù)。公司先后與多個國家的知名企業(yè)建立了戰(zhàn)略伙伴關(guān)系,共同開發(fā)新產(chǎn)品、新技術(shù)。通過資源共享和市場互補(bǔ),Heatron不僅成功進(jìn)入了多個新興市場,還顯著提升了其品牌在國際市場上的知名度和影響力。
2023年10月,華為坤靈(HUAWEI eKit)在香港成功舉辦了分銷新品發(fā)布會。針對香港市場的特點(diǎn),HUAWEI eKit展示了面向SOHO辦公、酒店餐飲、商業(yè)地產(chǎn)、零售商超等場景的新品,并通過整合政策、產(chǎn)品、解決方案、服務(wù)和數(shù)字工具平臺等措施,助力香港區(qū)域分銷伙伴不斷開拓中小企業(yè)市場。通過與聯(lián)強(qiáng)國際(香港)有限公司(SYNNEX)的緊密合作,HUAWEI eKit成功吸引了超過100名香港分銷商參與此次發(fā)布會,進(jìn)一步鞏固了其在香港市場的地位。
隨著科技的快速發(fā)展和市場需求的變化,CEI不斷調(diào)整自身的發(fā)展戰(zhàn)略和業(yè)務(wù)結(jié)構(gòu)。公司加大了對新技術(shù)、新產(chǎn)品的研發(fā)投入,推動產(chǎn)業(yè)結(jié)構(gòu)的升級和轉(zhuǎn)型。同時,CEI還積極探索新的商業(yè)模式和市場機(jī)會,為公司的可持續(xù)發(fā)展提供了有力保障。
隨著網(wǎng)絡(luò)安全威脅的不斷加劇,電子安全行業(yè)面臨著前所未有的挑戰(zhàn)。3E SECURITY公司緊跟行業(yè)趨勢,加強(qiáng)了網(wǎng)絡(luò)安全服務(wù)的研發(fā)和推廣。公司推出了一系列網(wǎng)絡(luò)安全解決方案,幫助客戶有效應(yīng)對各類網(wǎng)絡(luò)攻擊和數(shù)據(jù)泄露風(fēng)險。同時,公司還加強(qiáng)了對客戶的安全培訓(xùn)和技術(shù)支持,提升了客戶的安全意識和應(yīng)對能力。
為了進(jìn)一步提升國際競爭力,Goldentech制定了明確的國際化戰(zhàn)略。公司通過設(shè)立海外研發(fā)中心、銷售網(wǎng)絡(luò)和服務(wù)中心,加強(qiáng)與國際市場的聯(lián)系和溝通。同時,Goldentech還積極參與國際標(biāo)準(zhǔn)的制定和推廣工作,提升其在全球半導(dǎo)體行業(yè)的話語權(quán)和影響力。經(jīng)過多年的努力,Goldentech已經(jīng)成功在多個國家和地區(qū)建立了完善的業(yè)務(wù)體系和服務(wù)網(wǎng)絡(luò),為全球客戶提供更加便捷、高效的服務(wù)和支持。
今天,電視機(jī)與視訊轉(zhuǎn)換盒應(yīng)用中的大多數(shù)調(diào)諧器采用的都是傳統(tǒng)單變換MOPLL概念。這種調(diào)諧器既能處理模擬電視訊號也能處理數(shù)字電視訊號,或是同時處理這兩種電視訊號(即所謂的混合調(diào)諧器)。在設(shè)計這種調(diào)諧器時需考慮的關(guān)鍵因素包括低成本、低功耗、 ...… 查看全部問答∨ |
|
我在程序中使用定時器5進(jìn)行定時調(diào)用AD采樣函數(shù),可是定時器一直無法啟動,程序如下,還請高手們指出錯誤之處 void Time5IntTest(void) { rTCON = 0xffffff; // 000 不自動重載(反轉(zhuǎn)模式)|不更新TCNTB5|停止定時器5 r ...… 查看全部問答∨ |
|
EVC4.0+PXA270SDK(自定義無錯)開發(fā)的軟件? 使用 EVC4.0+PXA270SDK(自定義無錯)開發(fā)的軟件release版無法在270pPDA上使用,請問是為什么? (運(yùn)行時報缺庫文件) … 查看全部問答∨ |
公司要我在WINCE下實(shí)現(xiàn)Direct3D應(yīng)用,我以前沒用過EVC4.0,但用過VC6.0。在EVC中我只加進(jìn)頭文件<d3dx9.0>后就發(fā)生以下錯誤: pogram Files\\Microsoft DirectX 9.0 SDK (December 2004)\\Include\\d3dx9math.inl(1578) : error C2065: \'sqrtf\ ...… 查看全部問答∨ |
寫了個USB轉(zhuǎn)COM口的驅(qū)動,但是為何系統(tǒng)啟動過程中裝載完驅(qū)動就迅速卸載? 打印信息, USBToCOM::Process Attach USBToCOM::Process Detach sources文件 RELEASETYPE=PLATFORM TARGETNAME=ucom TARGETTYPE=DYNLINK DLLENTRY=DllEntry DEF ...… 查看全部問答∨ |
在WINCE下通過writefile寫串口,原以為該函數(shù)應(yīng)該是阻塞式的,與串口發(fā)送過程是同步的,即串口實(shí)際發(fā)送完畢,該函數(shù)才 能返回。現(xiàn)在用示波器測量了下,發(fā)現(xiàn)不是這樣,特別是寫多個字節(jié)時,串口還沒有發(fā)送完畢,writefile函數(shù)就返回了。 請問在 ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計
- 小型傾轉(zhuǎn)旋翼機(jī)的無刷直流電機(jī)驅(qū)動器設(shè)計
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計
- 基于GPS自動授時的無線智能控制器的設(shè)計
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機(jī)載穩(wěn)定云臺控制系統(tǒng)的設(shè)計
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時處理器M7000
- AI時代的孩子,如何成為未來的開創(chuàng)者?
- 通用汽車轉(zhuǎn)向LFP電池,LG新能源和三星SDI擬在美建廠
- 蓋世汽車研究院:政策助推疊加技術(shù)迭代 全固態(tài)電池蓄勢待發(fā)
- 小鵬汽車董事長預(yù)測:2027年激光雷達(dá)非智能駕駛必備
- 解碼大眾汽車中國戰(zhàn)略 - 決戰(zhàn)智能化電氣化的三板斧
- 2025從具身智能大腦展望人形機(jī)器人發(fā)展
- “荊楚”人形機(jī)器人即將量產(chǎn),智能時代的新篇章!
- 小鵬純視覺方案:技術(shù)突圍與市場下沉的雙重博弈
- 為什么無人出租車能“零”事故,而智能駕駛輔助卻事故頻發(fā)?
- 重磅!一顆要顛覆全球智駕的芯片點(diǎn)亮了!
- ADI直播:MEMS技術(shù)與產(chǎn)品解析
- 解鎖【W(wǎng)5500-EVB-Pico】,探秘以太網(wǎng)底層,得捷Follow me第4期來襲!
- 直播已結(jié)束【使用 TI 低成本 MSPM0 MCU 快速開發(fā) – 生態(tài)詳解系列之二】(9:45開始入場)
- 有獎直播|TI 芯技術(shù)助力電機(jī)開發(fā)
- 逛安富利新能源技術(shù)創(chuàng)新云會展 贏好禮!
- 點(diǎn)評Vishay視頻 瘋狂搶樓贏禮進(jìn)行時!
- Silicon Labs EFM32PG22開發(fā)套件 傳你所思 創(chuàng)你所想!申請進(jìn)行時!
- 了解TI光影藝術(shù),觀看DLP系列視頻,搶樓贏禮!
- 關(guān)于STM32的硬件IIC使用問題解決方案
- 儲能投資超過40億美元 成本下降起了很大作用
- 5G將推動中國科技公司進(jìn)入全球智能手機(jī)行業(yè)的頂峰
- 禾望225/250kW組串式逆變器通過全系列權(quán)威認(rèn)證
- STM32F103使用硬件i2c作為從機(jī)模式
- 恩智浦最新CAN收發(fā)器系列保障CAN通信安全而無需加密
- 貿(mào)澤面向全球開售用于物聯(lián)網(wǎng)的無線SoC和模組
- 新款TI C2000 Piccolo微控制器在電源控制應(yīng)用中實(shí)現(xiàn)效率最大化
- UltraSoC宣布提供業(yè)界首款RISC-V處理器跟蹤IP產(chǎn)品
- 恩智浦推出新型千兆交換機(jī)和雙端口PHY
- Linux操作系統(tǒng)內(nèi)核啟動參數(shù)詳細(xì)解析
- PWM不出波形啊
- wince4.2的操作系統(tǒng)如何修改
- 選擇什么樣的物聯(lián)網(wǎng)卡才靠譜?
- 無線模塊切換信道收發(fā)數(shù)據(jù)
- Linux驅(qū)動學(xué)習(xí) 之觸摸屏驅(qū)動
- 以太網(wǎng)數(shù)據(jù)發(fā)送問題?
- 請大家?guī)蛶兔Γ厴I(yè)設(shè)計,產(chǎn)生一個5KHz的三角波,階梯波,兩者同步
- 關(guān)于first-chance exception in **.exe access violation的問題
- 【平頭哥RVB2601創(chuàng)意應(yīng)用開發(fā)】初步實(shí)現(xiàn)NTP時鐘同步的萬年歷功能