资源描述
锯齿波 C程序
ORG 0100H #include<reg52.h>
MOV A,#00H #include<absacc.h>
MOV DPTR,#7FFFH #define uchar unsigned char
START: #define DAC0823 XBYTE[0x7FFFH]
MOVX @DPTR,A void main()
INC A { uchar temp;
SJMP START temp=0;
END while(1)
{ for(temp=0;temp<0xff;temp++)
DAC0832=temp;
}
}
三角波
ORG 0100H
STATR:
CLR A ;累加器清零
MOV DPTR,#7FFFH ;选通DAC0832
DOWN: ;线性下降段
MOVX @DPTR,A ;将累加器中的数据送入DAC0832中
INC A ;累加器加1
JNZ DOWN ;(A)不等于0时,转DOWN
MOV A,#0FFH
UP:
MOVX @DPTR,A ;将累加器中的数据送入DAC0832中
INC A ;累加器加1
JNZ UP ;(A)不等于0时,转UP
SJMP DOWN ;完成一轮循环后,再次进行循环
END
C程序
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define DAC0823 XBYTE[0x7FFFH]
void main()
{
Uchar temp;
While(1)
{
For(temp=0;temp<0xff;temp++)
DAC0832=temp;
If(temp==0xff)
{
For(;temp>=0;temp--)
DAC0832=temp;
}
}
}
方波
定时初值:
Unsigned int t=0;
TMOD=0x01;
TH0=0x3C;
TR0=1;
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV: TMOD,#01H
FLAG1: MOV: R0,#0AH
FLAG1: MOV: TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
JNB TF0,$
CLR TF0
DJNZ R0,FLAG2
CPL P1.0
SJMP FLAG1
END
C程序
#include<reg51.h>
sbit pulse_out=P1^0;
main()
{
Unsigned int t=0;
TMOD=0x01;
TH0=0x3C;
TR0=1;
While(1)
{
if(TF0)
{
t++;
TF0=0;
TH0=0x3C;
TL0=0xAF;
pulse_out=!pulse_out;
}
if(t==2)
{
t=0;
pulse_out=!pulse_out;
}
}
}
P0,P1,P2,P3口各自特点
这4个并口都可以作I/O口使用,都是准双向口;
P0:地址/数据复用线。如果它作为输出口使用时,外部要加上拉电阻;
P2:传地址的高8位;
P3:每一位都有第二功能(串口、外部中断、定时、/WR、/RD)
寻址方式:#立即寻址,直接寻址,寄存器寻址,@寄存器简洁寻址,@A+DPTR或@A+PC变址寻址,位寻址,相对寻址。
两种基本通信方式:1异步通信:优点:数据传送的可靠性较高,能及时发现错误。
缺点:通信效率比较低!
2同步通信:优点: 通信效率高!
机器去抖(硬件去抖和软件去抖):机器触点在闭合断开瞬间由于弹性的作用影响,在闭合及断开瞬间均有抖动过程,从而电压信号也出现抖动。
硬件上去抖有:在键盘输出端加RS触发器,或双稳定电路构成去抖电路;
按键较多,则用软件去抖;(延时5-10ms)
单片机:将中央处理器(cpu)、随机存储器(ram)、只读存储器(ROM)、输入输出端口(I/O)等主要计算机功能部件集成在一片集成芯片上的微型计算机;
编写查找最大值程序。假设从内部RAM的30H单元开始存放10个无符号数,找出最大值送入内部RAM的MAX单元;
AX EQU 20H
RG 0000H
JMP MAXP
RG 0030H
MAXP: MOV R0,#30H
MOV A,@R0
MOV R7,#9
LOOP: INC R0
MOV 40H,@R0
CJNE A,40H,NE
JMP SUB
NEQ: JNC SUB
MOV A,@R0
SUB: DJNZ R7,LOOP
MOV MAX,A
SJMP $
END
展开阅读全文