由Proteus仿真入門單片機(jī)學(xué)習(xí)
3.3主程序
#include
#include
#include
void main(void)
{
static short P1_out_cnt=0; //定義對P1 口輸出時(shí)計(jì)數(shù)
int_init(); //調(diào)用中斷初始化子程序
while(1) //下面為一個(gè)無限循環(huán)
{
_nop_();
}
}
3.4時(shí)鐘中斷子程序
void timer_0 (void) interrupt 1 using 1
{ TL0= (65535-1000/16);
TH0= ((65535-1000/16)>>8); //重置時(shí)鐘中斷0 的時(shí)間計(jì)數(shù)寄存器值
P1=P1_out[P1_out_cnt]; //P1 口按數(shù)組給定值輸出
P1_out_cnt++; //指向數(shù)組中下一個(gè)值
P1_out_cnt=0x0f; //00001111B,保證0≤P1_out_cnt≤15
}
4 仿真與實(shí)驗(yàn)
在以上工作完成之后,通過仿真軟件Proteus7 professional 下面的ISIS7 Professional 菜單窗口里對一些參數(shù)進(jìn)行設(shè)定,為了簡單完成仿真,在此只對必要的參數(shù)進(jìn)行設(shè)定:首先對Design/Configure Power Rail 下的電源Vcc=5V 和GND=0 進(jìn)行設(shè)定,其次是對Source/add or remove source code file 下的源程序代碼名和Code generation tool=ASEM51 進(jìn)行設(shè)定,在次是對雙擊單片機(jī)U1 彈出的菜單進(jìn)行Clock Frequency 和Program file 目標(biāo)代碼(有源代碼編譯后產(chǎn)生的HEX 后綴名文件)的設(shè)定。最后點(diǎn)擊Debug/Execute 便開始仿真運(yùn)行,在運(yùn)行過程中可以看到電腦屏上電路圖中U1 輸出口的輸出狀態(tài),虛擬示波器上顯示如圖3 所示的波形。
為了對所仿真的結(jié)果做進(jìn)一步的認(rèn)證,在此設(shè)計(jì)了實(shí)際的電路來與之加以比較,如圖4所示是按照圖1 電路圖設(shè)計(jì)了實(shí)際電路板之后,用示波器對其輸出進(jìn)行測試所得實(shí)際波形,實(shí)驗(yàn)表明仿真的結(jié)果與實(shí)際的測試結(jié)果相一致。
圖3 仿真輸出波形
圖4 實(shí)際輸出波形
5 結(jié)束語
對所設(shè)計(jì)的C 語言程序結(jié)合硬件電路的進(jìn)行了仿真,并通過虛擬示波器顯示了所設(shè)計(jì)程序運(yùn)行的結(jié)果,并比較了仿真與實(shí)際電路運(yùn)行輸出結(jié)果,表明了通過Proteus 仿真軟件可以達(dá)到與通過實(shí)際電路來學(xué)習(xí)單片機(jī)的效果。
完整的設(shè)計(jì)了一個(gè)項(xiàng)目的硬件電路和C 程序,通過真實(shí)具體的正弦波發(fā)生電路及其程序的設(shè)計(jì)來達(dá)到學(xué)習(xí)單片機(jī)引路作用,增強(qiáng)了學(xué)習(xí)者對單片機(jī)工作原理和應(yīng)用設(shè)計(jì)的理解,為單片機(jī)初學(xué)者提供了一種切實(shí)可行的方法。
附圖實(shí)際測試電路板
注:實(shí)際電路板上包涵了文中圖1 的電路
51單片機(jī)相關(guān)文章:51單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
評論