用AVR單片機(jī)實(shí)現(xiàn)快速跳頻
上傳時(shí)間: 2013-10-23
上傳用戶:cicizoe
c語(yǔ)言編程軟件vc6.0使用教程,附件包含二個(gè)教程文件,VC++6.0培訓(xùn)教程完整版及VC6.0介紹。 Visual C++ 6.0,簡(jiǎn)稱VC或者VC6.0,是微軟的一款C++編譯器,將“高級(jí)語(yǔ)言”翻譯為“機(jī)器語(yǔ)言(低級(jí)語(yǔ)言)”的程序。Visual C++是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問(wèn)世,Visual C++已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。雖然微軟公司推出了 Visual C++.NET(Visual C++7.0),但它的應(yīng)用有很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。所以實(shí)際中,更多的是以Visual C++6.0為平臺(tái)。 vc6.0使用你首先要打開VC6.0界面,一般用得較多的是Win32控制臺(tái)應(yīng)用程序(源程序,擴(kuò)展名.cpp), 步驟是:(先工程—后文件—編譯—連接---運(yùn)行) 1,建立一個(gè)工程,“文件”——“新建”,出現(xiàn)下面界面:選擇“Win32 Console Application”(控制臺(tái)應(yīng)用程序,左邊倒數(shù)第三個(gè)),命名工程名稱,選擇保存位置。 點(diǎn)擊“確定”,進(jìn)入下一步,看到如下提示界面: 建立一個(gè)空工程,對(duì)應(yīng)其他需要的你一可以建立別的工程;點(diǎn)擊“完成”,之后 顯示你創(chuàng)建的工程的信息。 2,再在有一個(gè)的工程的條件下,我們?cè)俳⒁粋€(gè)源文件; “文件”——“新建”(快捷鍵Ctri+N),出現(xiàn): 建立源文件,選擇“C++ Source ”,一般都是建立這種文件的(適用在當(dāng)文件中適用)如果要建立頭文件的話,選擇“C/C++ Header File”,(適用在多文件工程中使用)命名,文件名稱,點(diǎn)擊“確定”,之后: 進(jìn)入編輯區(qū),在主界面編寫代碼:如下編寫完之后呢: 可以按編譯按鈕 調(diào)試程序,看看有沒(méi)有錯(cuò)誤,有的話改正,沒(méi)有的話就可以再按連接按鈕 檢查連接(多文件工程時(shí)常用,檢查文件間是否正常連接),最后,點(diǎn)運(yùn)行按鈕 ,就可以運(yùn)行了。 如果是您有代碼如:cpp文件,或 .h 文件,想添加都VC6.0里來(lái)測(cè)試的話,可以這樣做: 首先,要理解一下 文件擴(kuò)展名為:cpp和.h 文件擴(kuò)張名是.h,代表的是頭文件,一般是書寫一些函數(shù)原型,以及一些在整個(gè)程序中常用到的結(jié)構(gòu)體,頻繁使用的函數(shù)說(shuō)明,定義等等; 文件擴(kuò)張名為,cpp的,是C++中的源文件,也是最常用到的文件,每建立一個(gè)工程都要至少一個(gè)源文件(至少要有一個(gè)函數(shù)入口——主函數(shù)main() ),包含了核心代碼; 建立與運(yùn)行說(shuō)明:(以VC 6.0編譯器為例,其他編譯器類似) 首先,打開VC 6.0編譯環(huán)境; 在菜單欄——文件(的下拉菜單中選擇“新建”),在彈出的選擇窗口中,選擇 Win32 Console Application(控制臺(tái)應(yīng)用程序) ,在填寫工程名稱,選擇一個(gè)程序保存路徑, 點(diǎn)擊“完成”,查看工程信息。 在點(diǎn)擊“確定”,就建立一個(gè)簡(jiǎn)單的工程了。 再點(diǎn)擊左邊的工程信息右下角的“FileView”選項(xiàng); 可以看到你新建的工程,再雙擊你新建的工程名 可以查看工程的信息。 在雙擊工程文件,在這里是 777.files,可以看到該工程的包含的文件。 其中,Source Files 為包含所有工程的源文件 Header Files 為包含所有工程的頭文件 在源文件選項(xiàng)“Source Files ”,右鍵單擊中的“添加目錄到工程”,添加你要打開的擴(kuò)展名為 .cpp的源文件。在頭文件選項(xiàng)“ Header Files”,右鍵單擊中的“添加目錄到工程”,添加你要打開的擴(kuò)展名為 . h的頭文件。添加完你所有的頭文件和源文件之后,檢查一下是否添加完畢,之后就可以編譯了。 其中第一個(gè)按鈕 為編譯按鈕,可以找出工程的錯(cuò)誤信息,有錯(cuò)誤修改,沒(méi)錯(cuò)誤就可以跳到連接 ,編譯右邊的按鈕 ,即第三個(gè)按鈕(多文件工程一定要連接,查看文件是否準(zhǔn)確相連接) 當(dāng)編譯,連接都沒(méi)有錯(cuò)誤時(shí),可以按運(yùn)行按鈕 ,即可以運(yùn)行了。 相關(guān)資料:vc6.0中文綠色版下載
上傳時(shí)間: 2013-10-30
上傳用戶:tianjinfan
適用于51單片機(jī)的串口發(fā)n
標(biāo)簽: 51單片機(jī) 串口 字節(jié)
上傳時(shí)間: 2014-12-25
上傳用戶:qingzhuhu
89c51一種用N+1條線實(shí)現(xiàn)矩陣鍵盤
標(biāo)簽: 矩陣鍵盤
上傳時(shí)間: 2014-12-26
上傳用戶:lhw888
at91rm9200啟動(dòng)過(guò)程教程 系統(tǒng)上電,檢測(cè)BMS,選擇系統(tǒng)的啟動(dòng)方式,如果BMS為高電平,則系統(tǒng)從片內(nèi)ROM啟動(dòng)。AT91RM9200的ROM上電后被映射到了0x0和0x100000處,在這兩個(gè)地址處都可以訪問(wèn)到ROM。由于9200的ROM中固化了一個(gè)BOOTLOAER程序。所以PC從0X0處開始執(zhí)行這個(gè)BOOTLOAER(準(zhǔn)確的說(shuō)應(yīng)該是一級(jí)BOOTLOADER)。這個(gè)BOOTLOER依次完成以下步驟: 1、PLL SETUP,設(shè)置PLLB產(chǎn)生48M時(shí)鐘頻率提供給USB DEVICE。同時(shí)DEBUG USART也被初始化為48M的時(shí)鐘頻率; 2、相應(yīng)模式下的堆棧設(shè)置; 3、檢測(cè)主時(shí)鐘源(Main oscillator); 4、中斷控制器(AIC)的設(shè)置; 5、C 變量的初始化; 6、跳到主函數(shù)。 完成以上步驟后,我們可以認(rèn)為BOOT過(guò)程結(jié)束,接下來(lái)的就是LOADER的過(guò)程,或者也可以認(rèn)為是裝載二級(jí)BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、連接在外部總線上的8位并行FLASH的順序依次來(lái)找合法的BOOT程序。所謂合法的指的是在這些存儲(chǔ)設(shè)備的開始地址處連續(xù)的存放的32個(gè)字節(jié),也就是8條指令必須是跳轉(zhuǎn)指令或者裝載PC的指令,其實(shí)這樣規(guī)定就是把這8條指令當(dāng)作是異常向量表來(lái)處理。必須注意的是第6條指令要包含將要裝載的映像的大小。關(guān)于如何計(jì)算和寫這條指令可以參考用戶手冊(cè)。一旦合法的映像找到之后,則BOOT程序會(huì)把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超過(guò)16K-3K的大小。當(dāng)BOOT程序完成了把合法的映像搬到SRAM的任務(wù)以后,接下來(lái)就進(jìn)行存儲(chǔ)器的REMAP,經(jīng)過(guò)REMAP之后,SRAM從映設(shè)前的0X200000地址處被映設(shè)到了0X0地址并且程序從0X0處開始執(zhí)行。而ROM這時(shí)只能在0X100000這個(gè)地址處看到了。至此9200就算完成了一種形式的啟動(dòng)過(guò)程。如果BOOT程序在以上所列的幾種存儲(chǔ)設(shè)備中找到合法的映像,則自動(dòng)初始化DEBUG USART口和USB DEVICE口以準(zhǔn)備從外部載入映像。對(duì)DEBUG口的初始化包括設(shè)置參數(shù)115200 8 N 1以及運(yùn)行XMODEM協(xié)議。對(duì)USB DEVICE進(jìn)行初始化以及運(yùn)行DFU協(xié)議。現(xiàn)在用戶可以從外部(假定為PC平臺(tái))載入你的映像了。在PC平臺(tái)下,以WIN2000為例,你可以用超級(jí)終端來(lái)完成這個(gè)功能,但是還是要注意你的映像的大小不能超過(guò)13K。一旦正確從外部裝載了映像,接下來(lái)的過(guò)程就是和前面一樣重映設(shè)然后執(zhí)行映像了。我們上面講了BMS為高電平,AT91RM9200選擇從片內(nèi)的ROM啟動(dòng)的一個(gè)過(guò)程。如果BMS為低電平,則AT91RM9200會(huì)從片外的FLASH啟動(dòng),這時(shí)片外的FLASH的起始地址就是0X0了,接下來(lái)的過(guò)程和片內(nèi)啟動(dòng)的過(guò)程是一樣的,只不過(guò)這時(shí)就需要自己寫啟動(dòng)代碼了,至于怎么寫,大致的內(nèi)容和ROM的BOOT差不多,不同的硬件設(shè)計(jì)可能有不一樣的地方,但基本的都是一樣的。由于片外FLASH可以設(shè)計(jì)的大,所以這里編寫的BOOTLOADER可以一步到位,也就是說(shuō)不用像片內(nèi)啟動(dòng)可能需要BOOT好幾級(jí)了,目前AT91RM9200上使用較多的bootloer是u-boot,這是一個(gè)開放源代碼的軟件,用戶可以自由下載并根據(jù)自己的應(yīng)用配置。總的說(shuō)來(lái),筆者以為AT91RM9200的啟動(dòng)過(guò)程比較簡(jiǎn)單,ATMEL的服務(wù)也不錯(cuò),不但提供了片內(nèi)啟動(dòng)的功能,還提供了UBOOT可供下載。筆者寫了一個(gè)BOOTLODER從片外的FLASHA啟動(dòng),效果還可以。 uboot結(jié)構(gòu)與使用uboot是一個(gè)龐大的公開源碼的軟件。他支持一些系列的arm體系,包含常見(jiàn)的外設(shè)的驅(qū)動(dòng),是一個(gè)功能強(qiáng)大的板極支持包。其代碼可以 http://sourceforge.net/projects/u-boot下載 在9200上,為了啟動(dòng)uboot,還有兩個(gè)boot軟件包,分別是loader和boot。分別完成從sram和flash中的一級(jí)boot。其源碼可以從atmel的官方網(wǎng)站下載。 我們知道,當(dāng)9200系統(tǒng)上電后,如果bms為高電平,則系統(tǒng)從片內(nèi)rom啟動(dòng),這時(shí)rom中固化的boot程序初始化了debug口并向其發(fā)送'c',這時(shí)我們打開超級(jí)終端會(huì)看到ccccc...。這說(shuō)明系統(tǒng)已經(jīng)啟動(dòng),同時(shí)xmodem協(xié)議已經(jīng)啟動(dòng),用戶可以通過(guò)超級(jí)終端下載用戶的bootloader。作為第一步,我們下載loader.bin.loader.bin將被下載到片內(nèi)的sram中。這個(gè)loder完成的功能主要是初始化時(shí)鐘,sdram和xmodem協(xié)議,為下載和啟動(dòng)uboot做準(zhǔn)備。當(dāng)下載了loader.bin后,超級(jí)終端會(huì)繼續(xù)打印:ccccc....。這時(shí)我們就可以下在uboot了。uboot將被下載到sdram中的一個(gè)地址后并把pc指針調(diào)到此處開始執(zhí)行uboot。接著我們就可以在終端上看到uboot的shell啟動(dòng)了,提示符uboot>,用戶可以u(píng)boot>help 看到命令列表和大概的功能。uboot的命令包含了對(duì)內(nèi)存、flash、網(wǎng)絡(luò)、系統(tǒng)啟動(dòng)等一些命令。 如果系統(tǒng)上電時(shí)bms為低電平,則系統(tǒng)從片外的flash啟動(dòng)。為了從片外的flash啟動(dòng)uboot,我們必須把boot.bin放到0x0地址出,使得從flash啟動(dòng)后首先執(zhí)行boot.bin,而要少些boot.bin,就要先完成上面我們講的那些步驟,首先開始從片內(nèi)rom啟動(dòng)uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz燒寫到flash中的目的,假如我們已經(jīng)啟動(dòng)了uboot,可以這樣操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系統(tǒng)復(fù)位,就可以看到系統(tǒng)先啟動(dòng)boot,然后解壓縮uboot.gz,然后啟動(dòng)uboot。注意,這里uboot必須壓縮成.gz文件,否則會(huì)出錯(cuò)。 怎么編譯這三個(gè)源碼包呢,首先要建立一個(gè)arm的交叉編譯環(huán)境,關(guān)于如何建立,此處不予說(shuō)明。建立好了以后,分別解壓源碼包,然后修改Makefile中的編譯器項(xiàng)目,正確填寫你的編譯器的所在路徑。 對(duì)loader和boot,直接make。對(duì)uboot,第一步:make_at91rm9200dk,第二步:make。這樣就會(huì)在當(dāng)前目錄下分別生成*.bin文件,對(duì)于uboot.bin,我們還要壓縮成.gz文件。 也許有的人對(duì)loader和boot搞不清楚為什么要兩個(gè),有什么區(qū)別嗎?首先有區(qū)別,boot主要完成從flash中啟動(dòng)uboot的功能,他要對(duì)uboot的壓縮文件進(jìn)行解壓,除此之外,他和loader并無(wú)大的區(qū)別,你可以把boot理解為在loader的基礎(chǔ)上加入了解壓縮.gz的功能而已。所以這兩個(gè)并無(wú)多大的本質(zhì)不同,只是他們的使命不同而已。 特別說(shuō)名的是這三個(gè)軟件包都是開放源碼的,所以用戶可以根據(jù)自己的系統(tǒng)的情況修改和配置以及裁減,打造屬于自己系統(tǒng)的bootloder。
上傳時(shí)間: 2013-10-27
上傳用戶:wsf950131
單片機(jī)指令系統(tǒng) 3.1 MCS-51指令簡(jiǎn)介 3.2 指令系統(tǒng) 3.1 MCS-51指令簡(jiǎn)介 二、MCS-51系列單片機(jī)指令系統(tǒng)分類 按尋址方式分為以下七種:按功能分為以下四種: 1、立即立即尋址 1、數(shù)據(jù)傳送指令位操 2、直接尋址 2、算術(shù)運(yùn)算指令 3、寄存器尋址 3、邏輯運(yùn)算指令 4、寄存器間接尋址指令 4、控制轉(zhuǎn)移類指令 5、相對(duì)尋址 5、位操作指令 6、變址尋址 7、位尋址 三、尋址方式 3、寄存器間接尋址 MOV A, @R1 操作數(shù)是通過(guò)寄存器間接得到的。 4、立即尋址 MOV A, #40H 操作數(shù)在指令中直接給出。 5、基址寄存器加變址寄存器尋址 以DPTR或PC為基址寄存器,以A為變址寄存器, 以兩者相加形成的16位地址為操作數(shù)的地址。 MOVC A, @A+DPTR MOVC A, @A+PC 四、指令中常用符號(hào)說(shuō)明 Rn——當(dāng)前寄存器區(qū)的8個(gè)工作寄存器R0~R7(n=0~7); Ri——當(dāng)前寄存器區(qū)可作地址寄存器的2個(gè)工作寄存器R0和R1(i=0,1); direct——8位內(nèi)部數(shù)據(jù)存儲(chǔ)器單元的地址及特殊功能寄存器的地址; #data——表示8位常數(shù)(立即數(shù)); #datal6——表示16位常數(shù); add 16——表示16位地址; addrll——表示11位地址; rel——8位帶符號(hào)的地址偏移量; bit——表示位地址; @——間接尋址寄存器或基址寄存器的前綴; ( )——表示括號(hào)中單元的內(nèi)容 (( ))——表示間接尋址的內(nèi)容; 五、MCS-51指令簡(jiǎn)介 1. 以累加器A為目的操作數(shù)的指令 2. 以Rn為目的操作數(shù)的指令 3. 以直接地址為目的操作數(shù)的指令 4. 以寄存器間接地址為目的操作數(shù)指令 應(yīng)用舉例1 8段數(shù)碼管顯示 應(yīng)用舉例2 3.2 指令系統(tǒng) 2、堆棧操作指令 3. 累加器A與外部數(shù)據(jù)傳輸指令 4. 查表指令 MOVC A, @A+PC 例子: 5. 字節(jié)交換指令 6. 半字節(jié)交換指令 二、算術(shù)操作類指令 PSW寄存器 2. 帶進(jìn)位加法指令 3. 加1指令 4. 十進(jìn)制調(diào)整指令 5. 帶借位減法指令(Subtraction) 6. 減1指令(Decrease) 7. 乘法指令(Multiplication) 8. 除法指令(Division) 三、邏輯運(yùn)算指令 1. 簡(jiǎn)單邏輯操作指令 2. 循環(huán)指令 帶進(jìn)位左循環(huán)指令(Rotate Accumulator Left through Carry flag) 右循環(huán)指令(Rotate Accumulator Right) 帶進(jìn)位右循環(huán)指令(Rotate A Right with C) 3. 邏輯與指令 4. 邏輯或指令 5. 邏輯異或指令 四、控制轉(zhuǎn)移類指令 1. 跳轉(zhuǎn)指令 相對(duì)轉(zhuǎn)移指令 SJMP rel PC←(PC)+2 PC←(PC)+rel 程序中標(biāo)號(hào)與地址之間的關(guān)系 2. 條件轉(zhuǎn)移指令 3. 比較不相等轉(zhuǎn)移指令 4. 減 1 不為 0 轉(zhuǎn)移指令 5. 調(diào)用子程序指令 7. 中斷返回指令 五、位操作指令 1. 數(shù)據(jù)位傳送指令 2. 位變量邏輯指令 3. 條件轉(zhuǎn)移類指令
標(biāo)簽: 單片機(jī) 指令系統(tǒng)
上傳時(shí)間: 2013-10-27
上傳用戶:xuanjie
PLC TM卡開發(fā)系統(tǒng)匯編程序(ATM8051) ;***************** 定義管腳*************************SCL BIT P1.0SDA BIT P1.1GC BIT P1.2BZ BIT P3.6LEDI BIT P1.4LEDII BIT P1.5OK BIT 20H.1OUT1 BIT P1.3OUT2 BIT P1.0OUT3 BIT P1.1RXD BIT P3.0TXD BIT P3.1PCV BIT P3.2WPC BIT P3.3RPC BIT P3.5LEDR BIT P3.4LEDL BIT P3.6TM BIT P3.7;********************定義寄存器***********************ROMDTA EQU 30H;NUMBY EQU 61H;SLA EQU 60H;MTD EQU 2FH;MRD EQU 40H;TEMP EQU 50H;;ORG 00H;;INDEX:MOV P1, #00H;MOV P2, #0FFHMOV MTD ,#00HCALL REEMOV R0,40HCJNE R0,#01,NO;MOV P2,#1CHLJMP VIMEN MOV P2,#79HACALL TOUCHRESET ;JNC NO ;CALL READTM ;CJNE A,#01H,NO;NOPMOV MTD, #00HCALL WEENOPMOV P2,#4AHSETB BZCALL TIMECLR BZMOV PCON, #0FFHVIME:CALL TIME1CALL TOUCHRESETJNC VIMECALL READTMCJNE A, #01H,VIME;NOPNOPNOPIII: MOV MTD,#00HCALL REECALL BBJNB OK,NO1LJMP ZHUNO1:MOV MTD,#10H
上傳時(shí)間: 2014-03-24
上傳用戶:448949
同步技術(shù)是跳頻系統(tǒng)的核心。本文針對(duì)FPGA的跳頻系統(tǒng),設(shè)計(jì)了一種基于獨(dú)立信道法,同步字頭法和精準(zhǔn)時(shí)鐘相結(jié)合的快速同步方法,同時(shí)設(shè)計(jì)了基于雙圖案的改進(jìn)型獨(dú)立信道法,同步算法協(xié)議,協(xié)議幀格式等。該設(shè)計(jì)使用VHDL硬件語(yǔ)言實(shí)現(xiàn),采用Altera公司的EP3C16E144C8作為核心芯片,并在此硬件平臺(tái)上進(jìn)行了功能驗(yàn)證。實(shí)際測(cè)試表明,該快速同步算法建立時(shí)間短、同步穩(wěn)定可靠。
標(biāo)簽: FPGA 跳頻系統(tǒng) 同步算法
上傳時(shí)間: 2013-10-21
上傳用戶:JIMMYCB001
ZigBee2007系統(tǒng)-多跳組播
上傳時(shí)間: 2013-11-13
上傳用戶:a67818601
提出一種復(fù)合式雷達(dá)信號(hào),其兼有跳頻和極化編碼信號(hào)的特點(diǎn).并從信號(hào)形式和信號(hào)輻射能量方面分析了極化編碼跳頻信號(hào)的低截獲性能。
標(biāo)簽: 極化 中的應(yīng)用 編碼 跳頻信號(hào)
上傳時(shí)間: 2014-08-13
上傳用戶:tdyoung
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1