网站上传连接失败的原因,大连h5建站,抖音推广合作方式,网络营销如何进行c51的sfr、sbit
sfr:特殊功能寄存器声明 例如#xff1a;sfr P00x80 声明P0口寄存器#xff0c;物理地址为0x80 sbit:特殊位声明 例如#xff1a;sbit p0_1 0x81; 或 sbit p0_1 p0^1; 声明P0寄存器的第一位 可位寻址、不可位寻址#xff1a;在单片机系统中#xff0c;操…c51的sfr、sbit
sfr:特殊功能寄存器声明 例如sfr P00x80 声明P0口寄存器物理地址为0x80 sbit:特殊位声明 例如sbit p0_1 0x81; 或 sbit p0_1 p0^1; 声明P0寄存器的第一位 可位寻址、不可位寻址在单片机系统中操作任意寄存器或者某一位的数据时必须给出其物理地址又因为一个寄存器里面有8位所以位的数据是寄存器数量的8倍单片机无法对所有位进行编码故每8个寄存器中只有一个是可以位寻址的。对于不可位寻址的寄存器若要只操作其中一位而不影响其他位时可用“”、“|”、“^”的方法进行位操作
LED点阵屏显示图形
main.c
#include REGX52.H
#include Delay.hsbit RCKP3^5; //RCLK
sbit SCKP3^6; //SRCLK
sbit SERP3^4; //SER#define MATRIX_LED_PORT P0void _74HC595_WriteByte(unsigned char Byte)
{unsigned char i;for(i0;i8;i){SERByte(0x80i);SCK1;SCK0;}RCK1;RCK0;
}void MatrixLED_ShowColumn(unsigned char Column,Data)
{_74HC595_WriteByte(Data);MATRIX_LED_PORT~(0x80Column);Delay(1);MATRIX_LED_PORT0xFF;
}void main()
{SCK0;RCK0;while(1){MatrixLED_ShowColumn(0,0x3C);MatrixLED_ShowColumn(1,0x42);MatrixLED_ShowColumn(2,0xA9);MatrixLED_ShowColumn(3,0x85);MatrixLED_ShowColumn(4,0x85);MatrixLED_ShowColumn(5,0xA9);MatrixLED_ShowColumn(6,0x42);MatrixLED_ShowColumn(7,0x3C);}
}LED点阵屏显示动画
main.c
#include REGX52.H
#include Delay.h
#include MatrixLED.h//动画数据
unsigned char code Animation[]{0x3C,0x42,0xA9,0x85,0x85,0xA9,0x42,0x3C,0x3C,0x42,0xA1,0x85,0x85,0xA1,0x42,0x3C,0x3C,0x42,0xA5,0x89,0x89,0xA5,0x42,0x3C,
};void main()
{unsigned char i,Offset0,Count0;MatrixLED_Init();while(1){for(i0;i8;i) //循环8次显示8列数据{MatrixLED_ShowColumn(i,Animation[iOffset]);}Count; //计次延时if(Count15){Count0;Offset8; //偏移8切换下一帧画面if(Offset16){Offset0;}}}
}
MatrixLED.c
#include REGX52.H
#include Delay.hsbit RCKP3^5; //RCLK
sbit SCKP3^6; //SRCLK
sbit SERP3^4; //SER#define MATRIX_LED_PORT P0/*** brief 74HC595写入一个字节* param Byte 要写入的字节* retval 无*/
void _74HC595_WriteByte(unsigned char Byte)
{unsigned char i;for(i0;i8;i){SERByte(0x80i);SCK1;SCK0;}RCK1;RCK0;
}/*** brief 点阵屏初始化* param 无* retval 无*/
void MatrixLED_Init()
{SCK0;RCK0;
}/*** brief LED点阵屏显示一列数据* param Column 要选择的列范围0~70在最左边* param Data 选择列显示的数据高位在上1为亮0为灭* retval 无*/
void MatrixLED_ShowColumn(unsigned char Column,Data)
{_74HC595_WriteByte(Data);MATRIX_LED_PORT~(0x80Column);Delay(1);MATRIX_LED_PORT0xFF;
}
MatrixLED.h
#ifndef __MATRIX_LED_H__
#define __MATRIX_LED_H__void MatrixLED_Init();
void MatrixLED_ShowColumn(unsigned char Column,Data);#endif