/****************************************************************
外部晶振8M
PA0~3:四位數(shù)碼管的位選
PB0~7:數(shù)碼管的8位段選
外部中斷0用于計(jì)數(shù)
定時(shí)器0溢出中斷的定時(shí)為1ms
說(shuō)明 :檢測(cè)到水流較小時(shí),繼電器延時(shí)1秒關(guān)閉
******************************************************************/
#include<iom16v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //數(shù)碼管段選
char position[4]={0xfe,0xfd,0xfb,0xf7};//數(shù)碼管位選
uint sumnum=0; //用于記錄1000ms內(nèi)進(jìn)入中斷的次數(shù)
uint time=0; //記錄進(jìn)入比較定時(shí)器0的次數(shù)
uint num=0; //記錄1ms內(nèi)進(jìn)入中斷的次數(shù)
uint count=0; //進(jìn)入外部中斷0的次數(shù)
uchar flag;
uint sumnum1; //記錄100ms內(nèi)的數(shù)目
/***************************函數(shù)聲明***************************/
void delay();
void display(uint m );
void init();
void init_0();
void init_2();
void _delay_us(uint l)
{
unsigned int i;
for(i=0;i<l;i++)
{
asm("nop");
}
}
/**************************主函數(shù)***********************************/
void main()
{
init();
init_0();
init_2();
while(sumnum<5)
{
PORTD=0XBF;
segdisplay(sumnum1);
}
while(1)
{
segdisplay(sumnum1);
}
}
/*************************掃描數(shù)碼管時(shí)的延時(shí)函數(shù)*********************/
void delay()
{
uchar i,j;
for(i=6;i>0;i--)
for(j=225;j>0;j--);
}
/************************數(shù)碼管顯示函數(shù)*****************************/
void segdisplay( int temp)
{
int seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int temp1,temp2,temp3,temp4;
temp1=temp/1000;
temp2=(temp/100)%10;
temp3=(temp/10)%10;
temp4=temp%10;
DDRB=0xff;
DDRA|=0x0f;
Porta=~BIT(3);
PORTB=seg[temp1];
_delay_us(100);
Porta=~BIT(2);
PORTB=seg[temp2];
_delay_us(100);
Porta=~BIT(1);
PORTB=seg[temp3];
_delay_us(100);
Porta=~BIT(0);
PORTB=seg[temp4];
_delay_us(100);
}
/***********************管腳初始化函數(shù)*********************/
void init()
{
DDRD|=0X40; //PD4 設(shè)置為輸出
PORTD=0XBF;
DDRA=0XFF;
DDRB=0XFF;
Porta=0XFF;
PORTB=0XFF;
}
/***********************外部中斷0初始化*********************/
void init_0()
{
MCUCR=0X02; //INT0為下降沿觸發(fā)
GICR=0X40; //使能INT0中斷
SREG=0X80; //使能總中斷
}
/**********************定時(shí)器2初始化***********************/
void init_2()
{
TCCR0=0x03; // 內(nèi)部時(shí)鐘,64 分頻(8M/64=125KHz)
TCNT0=0x83; //裝初值
TIMSK=0x01; // 允許 T/C0溢出中斷中斷
}
/***********************外部中斷0子函數(shù)********************/
#pragma interrupt_handler int0_isr:2
void int0_isr(void)
{
count++;
}
/*********************定時(shí)計(jì)數(shù)器0溢出中斷子函數(shù)*****************/
#pragma interrupt_handler int0_over:10
void int0_over(void)
{
TCNT0=0x83; //重裝初值
if((time%100) == 0)
sumnum1 = num;
if(time == 1000)
{
sumnum=num;
if(sumnum<10)
{
if((flag==1)&&(sumnum<10))
{
PORTD=0XFF;
flag=0;
}
flag++;
}
else
PORTD=0XBF;
num=0;
time=0;
}
num+=count;
count=0;
++time;
}
標(biāo)簽:
C語(yǔ)言
上傳時(shí)間:
2016-03-09
上傳用戶:彥 yan
VIP專區(qū)-嵌入式/單片機(jī)編程源碼精選合集系列(129)資源包含以下內(nèi)容:1. 利用51單片機(jī)設(shè)計(jì)數(shù)字鐘.2. 理論教材《嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用教程》部分程序代碼.3. zd1211b芯片的無(wú)線網(wǎng)卡的驅(qū)動(dòng),移植到s3c2410平臺(tái).4. 突破時(shí)間限制的軟件.5. 單片機(jī)MEGA128的BOOTLOADER程序。.6. 能實(shí)現(xiàn)i2c的存.7. CAN現(xiàn)場(chǎng)總線接收發(fā)送程序-lpc2290.8. CAN現(xiàn)場(chǎng)總線自發(fā)自收程序-lpc2290.9. CAN現(xiàn)場(chǎng)總線發(fā)送程序-lpc2290.10. 希望對(duì)大家有幫助.11. 觸摸屏校準(zhǔn)程序-lpc2290.12. 單片機(jī)語(yǔ)言C51應(yīng)用實(shí)戰(zhàn)集錦。里面介紹了c51開(kāi)發(fā)程序.13. protel99se 元件庫(kù) protel99se 元件庫(kù).14. 基于dsp5416的圖像處理程序源碼。已調(diào)試通過(guò).15. 在微機(jī)上模擬I2C總線的設(shè)計(jì)中.16. 很多c語(yǔ)言編的單片機(jī)實(shí)用程序 很好
推薦.17. 51單片機(jī)的4*4鍵盤(pán)掃描及l(fā)cd液晶顯示.18. 液晶顯示模塊文檔。
topway。。。。。。.19. STR7的IAP程序,實(shí)現(xiàn)的主要功能是通過(guò)串口對(duì)目標(biāo)產(chǎn)品的程序升級(jí),而不需要仿真器燒寫(xiě)程序.20. 一個(gè)不錯(cuò)的PLC通訊程序,可以方便地實(shí)現(xiàn)遠(yuǎn)程監(jiān)控,現(xiàn)場(chǎng)總線監(jiān)控..21. 高精度時(shí)鐘CDC7005DEMO板[500MHZ].22. 嵌入式應(yīng)用的簡(jiǎn)易printf實(shí)現(xiàn).23. 嵌入式的GUI.24. 是一個(gè)jtag調(diào)試板的原理圖.25. 16×16字庫(kù).26. 高集成度TYPEA讀寫(xiě)器芯片MFRC500及其應(yīng)用.27. 驅(qū)動(dòng)128芯片 完成基本的 Porta亮燈調(diào)試功能.28. mp3源代碼,該MP3功能異常強(qiáng)大,對(duì)于想做嵌入式開(kāi)發(fā)的朋友非常實(shí)用.29. 簡(jiǎn)單的51單片機(jī)與PC機(jī)通過(guò)串口實(shí)現(xiàn)的串行通信..30. 低通濾波源碼.31. 手機(jī)pcb完整原理圖.32. 低通濾波源碼.33. 軟件模擬i2c.34. zigbee培訓(xùn)資料,里面內(nèi)容詳盡,從zigbee基本知識(shí),到協(xié)議棧的分析.35. Nokia N82 手機(jī)詳細(xì)設(shè)計(jì)原理圖.36. 流明615GPIO在IAR5.11上的程序.37. f040的i2c.38. UBOOT1.31修改文件.39. 斯道vivi.40. 武漢創(chuàng)維特ARM教學(xué)培訓(xùn)課件
01 嵌入式系統(tǒng)簡(jiǎn)介.ppt
02 ARM體系結(jié)構(gòu)及編程模型.ppt
03 ARM指令分類(lèi)及尋址方式.ppt
04 ARM指令系統(tǒng)及匯編程序設(shè)計(jì).ppt
05.
標(biāo)簽:
ITU-R
656
BT
數(shù)據(jù)協(xié)議
上傳時(shí)間:
2013-05-22
上傳用戶:eeworm