今天做的是蓝桥杯所有模块的综合,只展示模块的核心代码,所以只能作为复习资料,而不是学习资料。这次给原理图全在官方给的资料里,考试记不起来可以在文件夹里找到!
(一)LED
核心代码示例:文章来源地址https://www.toymoban.com/news/detail-435005.html
void lighten(u8 led)
{
P0=~led;
P2=P2&0X1F|0X8F;
P2=P2&0X1F;
}
原理图:
回忆一下,译码器选择Y4使得其为低电平,J13中WR与地连接,所以或非门后Y4C为1,锁存器才能打开,P0的信息才能给右侧。二极管左侧为0才能亮,所以书写代码时我们常用~取反,使得P0取1为亮,取0为暗,符合人们的思维习惯。
(二)外中断
核心代码示例:
void open()
{
EA=1;
EX1=1;
EX0=1;
IT1=1;
IT0=1;
}
void stop1() interrupt 0
{
P0=~1;
P2=P2&0X1F|0X80;
P2=P2&0X1F;
}
void stop2() interrupt 2
{
P0=~0;
P2=P2&0X1F|0X80;
P2=P2&0X1F;
}
原理图:
打开中断→使用中断就可以,注意中断与中断,中断与主函数之间不能同时使用相同的引脚和期间,后果不可估计,如LED与数码管。
(三)定时器
核心代码示例:
void Timer0Init(void) //50毫秒@11.0592MHz
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0x4C; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
STC-ISP直接提供代码。中断号码在上一个模块的原理图中。
(四)数码管文章来源:https://www.toymoban.com/news/detail-435005.html
核心代码示例:
void translate(u8 org[],u8 tran[])
{
u8 k,j,mid;
for(j=0,k=0;j<8;j++,k++)
{
switch(org[k])
{
case '0': mid = 0xc0; break;
case '1': mid = 0xf9; break;
case '2': mid = 0xa4; break;
case '3': mid = 0xb0; break;
case '4': mid = 0x99; break;
case '5': mid = 0x92; break;
case '6': mid = 0x82; break;
case '7': mid = 0xf8; break;
case '8': mid = 0x80; break;
case '9': mid = 0x90; break;
case '-': mid = 0xbf; break;
default: mid = 0xff;
}
if(org[k+1]=='.')
{
mid=mid&0x7f;
k++;
到了这里,关于蓝桥杯单片机模块代码综合(考前快速复习)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!