?? main.c
字號:
//-----------------------------------------------------------------
// 名稱: TMR1與TMR2定時器控制十字路口秒計時顯示屏
//-----------------------------------------------------------------
// 說明: 本例運行時,東西向藍色數碼管與南北向紅色數碼管同步倒計時,
// 若干秒后交換,如此往復.
// 本例使用的兩個定時器中,TMR1定時器負責遞減秒數及切換方向,
// TMR2定時器負責刷新顯示數碼管.
//
//-----------------------------------------------------------------
#include <pic.h>
#define INT8U unsigned char
#define INT16U unsigned int
#define _XTAL_FREQ 1000000UL
//蜂鳴器定義
#define BEEP() (RA0 = ~RA0)
//設置最大秒數為12秒,每12秒將切換通行方向
//這里為了能盡快觀察到運行效果而將該值設得較小
#define MAX_SECOND 12
//通行方向類型(東西/南北)
enum TRAFFIC_DIRECTION {EW,SN} Current_Direct;
//0~9的數碼管段碼
const INT8U SEG_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//當前剩余秒數(兩位)及秒顯示緩沖
int Remain_Second;
INT8U Second_Display_Buffer[] = {0,0};
//-----------------------------------------------------------------
// 根據剩余秒數Remain_Second刷新秒顯示緩沖
//-----------------------------------------------------------------
void Refresh_Second_Display_Buffer()
{
}
//-----------------------------------------------------------------
// 在剩余5秒時輸出聲音
//-----------------------------------------------------------------
void Alarm()
{
}
//------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------
void main()
{
ADCON1 = 0x06;
PORTB = TRISB = 0x00; //數碼管段碼輸出端口
PORTD = TRISD = 0x00; //數碼管位碼輸出端口
TRISA0 = 0; //RA0接蜂鳴器輸出
}
//-----------------------------------------------------------------
// TMR1,TMR2定時器中斷分別控制倒計時與數碼管顯示
//-----------------------------------------------------------------
void interrupt TMR12_OVR_INT()
{
//TMR1定時器溢出中斷控制倒計時
if (TMR1IF)
{
}
//TMR2定時器匹配中斷控制數碼管刷新顯示
if (TMR2IF)
{
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -