📄 l6-1.c
字号:
/**********************************************************************
程序名称:L6-1.c
程序功能:通过8位串入并出移位寄存器74LS164,扩展单片机的输出端口
程序作者:张三
创建时间:2008-3-28
**********************************************************************/
#include <reg51. h>
sbit OE74164 = P3^2; // 0-禁止74164串入; 1-允许74164串入
unsigned char data i; // 循环控制变量
unsigned char data Patten[9]={ 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff }; // 输出数据
unsigned int CNT=0; // 50ms定时计数器
/**********************************************************************
函数名称:Time0( void )
函数功能:定时器1中断服务程序
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void Time0( void ) interrupt 1 using 3
{
CNT++; // 50ms定时时间到,定时计数器加1
if( CNT==20 ){ // 1s定时时间到
CNT=0; // 清零定时计数器
OE74164 = 0;
}
TH0 = 0x3c; // 重装定时器初值
TL0 = 0xb0;
}
/**********************************************************************
函数名称:Serial( void )
函数功能:串行口中断服务程序
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void Serial( void ) interrupt 5 using 2
{
TI = 0; // 清零发送结束标志
OE74164 = 1;
}
/**********************************************************************
函数名称:main( void )
函数功能:单片机初始化,向SBUF中装入待发送的数据
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void main( void )
{
TMOD = 0x01; // 由TR0控制T0的启、停,工作方式1
TH0 = 0x3c; // 给加1计数器赋初值
TL0 = 0xb0;
EA = 1; // 打开中断
ET0 = 1; // 允许T0请求中断
TR0 = 1; // 启动T0
ES = 1; // 允许串行通信请求中断
SCON = 0x00; // 工作方式0,REN=0,禁止接收,TI=0
for( ; ; ){
for( i=0; i<8; i++ ){
SBUF = Patten[i]; // 启动单片机串行口输出
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -