#include
void DYLA(uint i); void main(void) { COM8255=0x80; while(1)
{ PA8255=0x3f; /*PA口的第1到第6位分别控制6S,8S,9S,10S,12S,15S这6道工具的启停*/
DYLA(6); PA8255=0x3e; DYLA(2); PA8255=0x3c; DYLA(1); PA8255=0x3a; DYLA(1); PA8255=0x30; DYLA(2); PA8255=0x20; DYLA(3); PA8255=0x00; } }
25
6.编程实现由DAC0832输出的幅度和频率都可以控制的三角波,即从0上升到最大值,再从最大值下降到0,并不断重复。
/*产生幅值为125,频率为2Hz的三角波*/ #include
#define uchar unsigned char
#define CYCLE 2000 //此波形的得到是通过定时2ms中断,在中断中当数据加到125个数时,再递减到0.如此循环。可得三角波。其T=125*2*2ms=500ms.所以f=2Hz.
uchar xdata DA_data; /*定义变量指向0832的数据输出地址*/
void main(void)
{ TMOD=0x10; /*定时器1工作于方式1*/ TH1=-CYCLE/256; TL1=-CYCLE%6; TR1=1; IE=0x88; while(1); }
void timer1(void) interrupt 2 using 1 { static uchar s_Counter;
static bit flag; //定义递减标志位 if(flag==0)
{ if(s_Counter++>=124) //当增到125时开始递减 { flag=1; } } else
26
{ if(s_Counter--<=0) //当减到0时开始递增 { flag=0; } }
DA_data=s_Counter; //输出需要转换的数据 TH1=-CYCLE/256; TL1=-CYCLE%6; }
27