📄 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 + -