新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC16F877A定時(shí)器的學(xué)習(xí)

PIC16F877A定時(shí)器的學(xué)習(xí)

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
由于實(shí)時(shí)數(shù)據(jù)的仿真需要用到定時(shí)器產(chǎn)生數(shù)據(jù),今天晚上完成PIC16F877A產(chǎn)生正弦波形,并將波形數(shù)據(jù)發(fā)送到上位機(jī)!

這是一個(gè)三角波的仿真程序,并通過(guò)串口發(fā)送到上位機(jī)

本文引用地址:http://2s4d.com/article/201611/317653.htm

#include
#include
#include

#include "main.h"
#include "t232.h"
#include "lcd.h"
#include "timer.h"

//define global variable

bank1 uchar flag =0 ;//利用flag判斷中斷時(shí)間是否到了!
bank1 char dat[6] ;

bank2 char str[]="shan dong qing gong ye xue yuan" ;
bank2 char str1[]="Starting........" ;
bank2 char str2[]="Capturing......." ;
bank2 char str3[]="Stop.........." ;
//bank2 float test = 0;
//bank2 float t1 ;
bank2 uchar t1 =0 ;
bank2 uchar t2=0 ;
bank1 uchar state = READY ;//當(dāng)前狀態(tài)
bank1 uchar frame[3] ;//幀緩沖
bank1 uchar temp ;
//ms級(jí)延時(shí)程序
void DelayMS(uint ms){
uint i;
while(ms--){
for(i=0;i<100;i++);
}
}

//10us級(jí)延時(shí)程序
void Delay10US(uint us){
uchar i;
for(i=0;i}
void interrupt main_int()
{
if(RCIE&&RCIF)
{
RCIF=0;
if(OERR)
{
CREN=0;
CREN=1;
}
else//不溢出,
{
temp=RCREG ;
//注意這里可以使用簡(jiǎn)單的IF語(yǔ)句,但為了擴(kuò)展幀格式,使用switch語(yǔ)句
switch(temp)
{
case (:
break ;
case ):
break ;
default:
state=temp ;
}
}
}
if(T0IF==1)
{
T0IF=0;//must clear zero manually
flag=1 ;
}
}
void init_all()
{
init_232() ;
init_lcd() ;
init_timer() ;
}
void main()
{

init_all() ;

while(1)
{
while((t1>=-20)&&(state==CAPTURE))
{
t1++ ;
sprintf(dat,"(%d)",t1) ;
send_str(dat) ;
if(t1==20)
break ;
}
while((t1<=20)&&(state==CAPTURE))
{
t1-- ;
sprintf(dat,"(%d)",t1) ;
send_str(dat) ;
if(t1==-20)
break ;
}
switch(state)
{
case READY :
sendcmd(0x01) ;
sendcmd(0x82) ;
printlcd(str) ;
lcd_shift(0,6) ;
break ;
case WAIT:
sendcmd(0x01) ;
sendcmd(0x82) ;
printlcd(str1) ;
break ;
case CAPTURE:
sendcmd(0x01) ;
sendcmd(0x82) ;
printlcd(str2) ;
break ;
case END:
sendcmd(0x01) ;
sendcmd(0x80) ;
printlcd(str3) ;
delay_long() ;
break ;
default:
break ;
}
}


}



關(guān)鍵詞: PIC16F877A定時(shí)

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉