?? ex5-6.c
字號:
/*
標題:范例 5-6
版本:1.0
Target:89S51
程序描述:這個程序利用89S51連接DAC0800,然后通過Timer0
的控制不停地送出三角波 */
/* ***************************************************** */
#include <REGX51.H>
#define TIMER0_COUNT 0xEE00
/* 10000h-(11,059,200/(12*FREQ)) */
#define TOTAL 200
#define HALF TOTAL/2
long ticks=0;
unsigned char timer0_tick,count=0;
static void timer0_isr(void) interrupt TF0_VECTOR using 1
{
TR0=0;
TL0=(TIMER0_COUNT & 0x00FF);
TH0=(TIMER0_COUNT >> 8);
TR0=1;
if(ticks==TOTAL) ticks=0; // 一秒的時間到了,ticks=0
if (ticks<HALF)count++; // 前面一半的時間內,將count加1
if (ticks>HALF)count--; // 前面一半的時間內,將count減1
P0=count; // 將count的數值由PORT 1輸出
}
static void timer0_initialize(void)
{
EA=0;
timer0_tick=0;
TR0=0;
TMOD &= 0XF0;
TMOD |=0x01;
TL0=(TIMER0_COUNT & 0x00FF);
TH0=(TIMER0_COUNT >> 8);
PT0=0;
ET0=1;
TR0=1;
EA=1;
}
void main (void) {
timer0_initialize();
ticks=0;
count=0;
while (1); /* Loop forever */
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -