汇编语言实验简单IO实验,求高手进,帮我写程序,谢谢!!!

汇编语言实验简单IO实验,求高手进,帮我写程序,谢谢!!!,第1张

MOV DX, 1600H IO口地碰斗址

MOV AL, 00H 全零

OUT DX, AL输出出去

MOV AL, 0FFH 全一

OUT DX, AL输出唯瞎出去

MOV AL, 00H 全零

OUT DX, AL输出出去

MOV AL, 0FFH 全一

OUT DX, AL输出出去

HLT

按照这个方法,外接的 LED 一定会亮灭闪烁。

应该单步执行。

如果连续执行,速度太快,就看不出来指吵空了。

用普通 I/O 口也可以模拟标准 UART 串行口,进行串行通信。

UART 通信规范是以 8 位二进制数为一帧,低位在前,逐位的传输。

为了区分各个帧,在每一帧之前,要有一个 0 作为起始标记,之后,有一个 1,作为结束符。

在结束符改肆之前,还可选发一个“校验位”游歼桥,但是,目前多数的应用都不选择这个位。

那么,每次的串行通信,就是传送一个字节,加上前后的标记,共 10 位二进制数。

空闲时,发送的都是 1;一旦出现了 0,就说明开始传输数据了。

波特率

串行通信的一个重要指标就是传输速度,就是每秒传送了多少位二进制数。

这个速度称为波特率,单位是 bps,中文就是“位/秒”。

时间设定

当以 9600bps 来传送数据时,每一位数的持续时间是 (1/9600)s,这也就是间隔时间。

如果选用晶振频率是 11059200Hz,一个机器周期T的时间就是 (12/11059200)s

那么,一位数的持续时间 (1/9600)s,是多少个机器周期T呢 ?

这是很容易算的,就是下面的这个算式:

X = (1/9600) / (12/11059200) = 11059200 / 12 / 9600 = 96T

为了精确定时,可以利用定时器来定时,每当 96T 时间到了,就发送出去一位二进制数,这就行了。

实验程序

用 IO 口模拟串口输出的程序如下:

#include<reg52.h>

sbit TXD1 = P2^0//用IO口模拟串口发送端

sbit RXD1 = P2^1//用IO口模拟串口接收端

bit T96 //位变量

//----------------------------------------

void Wait96(void) //延时,控制波特率

{

while(T96) //等待出现0

T96 = 1 //清标志

}

//----------------------------------------

void WByte(char x)//发送一帧数神猛据

{

char i

TL0 = 160 //初值=256-96=160

TXD1 = 0//发送起始位0

TR0 = 1 //启动定时器

Wait96()//等待96T

for (i = 0i <8i++) { //8位数

TXD1 = x &1 //先传低位

x >>= 1

Wait96() //等待96T

}

TXD1 = 1//发送结束位1

Wait96()//等待96T

TR0 = 0 //关闭定时器

}

//----------------------------------------

void main()

{

char i

TMOD = 0x02 //T0定时方式2

TH0 = 160 //初值=256-96=160

IE = 0x82

T96 = 1 //清标志

while(1) {

for (i = 0x41i <0x5bi++) //A~Z

WByte(i)

WByte(0x0D)

WByte(0x0A)

}

}

//----------------------------------------

void inttime0() interrupt 1 //T0中断

{

T96 = 0 //设置标志

}

//----------------------------------------

AT89C51是一种常见的8位单片机,可以用来控制各种不同的外设,包括IO口。下面是使用AT89C51控制IO口的基本步骤:

定义和初始化端口:在程序中,需要先定义要控制的漏芹端口,然后初始化端口的输入/输出状态。例如,如果要使用P1端口,可以在程序的开头添加以下代码:

控制端口状态:可以使用语句来控制端口的状态。例如,如果要将P1.0口设置为高电平,可以使用以下代码:

等待一段时间:为了保证IO口能够正确地工作,茄唤有时候需要在控制端口状态后等待一段时间。例如,如果要让LED闪烁,可以使用以下代码:

这是一个简单的闪烁程序,它使用delay函数等待1秒钟。在实际编程中,delay函数可以使用定时器来实现更精确的控制。

以上是使用AT89C51控制IO口的基本步骤,可以根据具体应用进行进一步的开发颤搜凯和调试。注意,在编程时需要遵循AT89C51的相关规范和注意事项。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12413910.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存