网上有关“用汇编语言做单片机时钟显示”话题很是火热,小编也是针对用汇编语言做单片机时钟显示寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
您好:手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,咨询加微信【】很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的
1.手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,通过添加客服微信
2.咨询软件加微信【】在"设置DD功能DD微信手麻工具"里.点击"开启".
3.打开工具.在"设置DD新消息提醒"里.前两个选项"设置"和"连接软件"均勾选"开启"(好多人就是这一步忘记做了)
4.打开某一个微信组.点击右上角.往下拉."消息免打扰"选项.勾选"关闭"(也就是要把"群消息的提示保持在开启"的状态.这样才能触系统发底层接口)
基于c8051f020单片机最小系统的实时时钟显示程序
c8051f020 FYD12864-0402B LCD显示,按键电子时钟//
#include <c8051f020.h>
#include<lcd.h>
#include <intrins.h>
#define uchar unsigned char
void lcd_ini();
void DISPInitial();
void ascii_change(void);
void delay();
void wri_add(uchar com);
void wri_dat(uchar com1);
void shan(void);
void disp();
void tkey(void);
void PORT_Init (void);
sbit cs=P1^7;
sbit sid=P1^6;
sbit sclk=P1^5;
bit flag=1;
uchar dat,count,f=1;//f测试哪个单元为当前闪烁状态
uchar data clock[3]={24,00,00};
uchar code clockname[10]={"北京时间:"};
uchar data num[6];
/*******主程序*************/
void main()
{
lcd_ini();
count=10;//机器周期为1us,每次定时50ms,此变量用来控制循环次数,在下面赋值为20,共定时1秒
TMOD=0x01;
TL0=0XB0;
TH0=0X3C;
EA=1;
ET0=1;
IT0=1;
EX0=1;
TR0=1;
while(1)
{
back:ascii_change();
disp();
delay();
if(flag==1)
goto back;
tkey();
shan();
delay();
}
}
/****lcd初始化*******/
/*void lcd_ini()
{
wri_add(0x30);
delay();
wri_add(0x0c);
delay();
wri_add(0x01);
delay();
wri_add(0x06);
delay();
}*/
void PORT_Init (void)
{
XBR0 = 0x00; //不让他连上IO口
XBR1 = 0x14; //允许外部中断连在端口上
XBR2 = 0x40; // Enable crossbar and weak pull-ups
P0MDOUT |= 0x00; // enable TX0 as a push-pull output
// P1MDOUT |= 0x07; // enable P1.6 (LED) as push-pull output
P2MDOUT=0xfe; //为了驱动步进电机的控制线
//P3MDOUT = 0xFF;
P74OUT=0x00; //配置成漏极方式可以让LCD显示成功 ,我试了配置成推挽方式不能正常显示
}
/********定时程序*************/
void timer1() interrupt 1 using 2
{
TL0=0XB0;
TH0=0X3C;
count--;
if(count==0)
{
count=10;
clock[2]++;//秒//
}
else
goto out;
if(clock[2]==60)
{
clock[2]=0;
clock[1]++;//分//
}
if(clock[1]==60)
{
clock[1]=0;
clock[0]++;
}
if(clock[0]==24)//时//
clock[0]=0;
out:_nop_();
}
/*******十位个位转换成ASCII码************/
void ascii_change(void)
{
num[5]=clock[2]-(clock[2]/10)*10+0x30;
num[4]=clock[2]/10+0x30;
num[3]=clock[1]-(clock[1]/10)*10+0x30;
num[2]=clock[1]/10+0x30;
num[1]=clock[0]-(clock[0]/10)*10+0x30;
num[0]=clock[0]/10+0x30;
}
/********廷时程序*************/
void delay()
{
uchar i,j;
for (i=250;i>0;i--)
for (j=250;j>0;j--);
}
/*****Write address*********/
void wri_add(uchar com)
{
uchar i,j,k;
cs=0;
cs=1;
dat=0xf8;
for(i=1;i<=8;i++)
{
sid=(bit)(dat&0x80);
sclk=0;
sclk=1;
sclk=0;
dat=dat<<1;
}
dat=com;
dat=dat&0xf0;
for(j=1;j<=8;j++)
{
sid=(bit)(dat&0x80);
sclk=0;
sclk=1;
sclk=0;
dat=dat<<1;
}
dat=com;
dat=_cror_(dat,4);// 此为高低四位交换
dat=dat&0xf0;
for(k=1;k<=8;k++)
{
sid=(bit)(dat&0x80);
sclk=0;
sclk=1;
sclk=0;
dat=dat<<1;
}
}
/*********Write data*************/
void wri_dat(uchar com1)
{
uchar i,j,k;
cs=0;
cs=1;
dat=0xfa;
for(i=1;i<=8;i++)
{
sid=(bit)(dat&0x80);
sclk=0;
sclk=1;
sclk=0;
dat=dat<<1;
}
dat=com1;
dat=dat&0xf0;
for(j=1;j<=8;j++)
{
sid=(bit)(dat&0x80);
sclk=0;
sclk=1;
sclk=0;
dat=dat<<1;
}
dat=com1;
dat=_cror_(dat,4);// 此为高低四位交换
dat=dat&0xf0;
for(k=1;k<=8;k++)
{
sid=(bit)(dat&0x80);
sclk=0;
sclk=1;
sclk=0;
dat=dat<<1;
}
}
/******display program***********/ //显示时间
void disp()
{
uchar i,k=0;
wri_add(0x80);
for (i=1;i<=9;i++)
wri_dat(clockname[i-1]);
wri_add(0x90);
for (i=1;i<=6;i++)
{
k++;
if(k==3||k==5)
wri_dat(clockname[8]);//时间之间的冒号。
wri_dat(num[i-1]);
}
}
/*******闪烁程序*************************/
void shan(void)
{
uchar i,k=0;
wri_add(0x90);
if(f==1)
{
num[0]=' ';
num[1]=' ';
}
else
goto next;
for (i=1;i<=6;i++)
{
k++;
if(k==3||k==5)
wri_dat(clockname[8]);//时间之间的冒号。
wri_dat(num[i-1]);
}
goto return1;
next: if(f==2)
{
num[2]=' ';
num[3]=' ';
}
else
goto next1;
for (i=1;i<=6;i++)
{
k++;
if(k==3||k==5)
wri_dat(clockname[8]);//时间之间的冒号。
wri_dat(num[i-1]);
}
goto return1;
next1: if(f==3)
{
num[4]=' ';
num[5]=' ';
}
else
goto return1;
for (i=1;i<=6;i++)
{
k++;
if(k==3||k==5)
wri_dat(clockname[8]);//时间之间的冒号。
wri_dat(num[i-1]);
}
return1:_nop_();
}
/*******外部中断***********/
void intr0() interrupt 0 using 2
{
flag=~flag;//判断是否闪烁位//
TR0=~TR0; //闪关定时否则开定时
f=1;
}
/**********按键程序************/
void tkey(void)
{
uchar judcekey;
judcekey=P1&0x0f;
if(judcekey==0x0f)
goto return2;
/*******移位键*********/
if (judcekey==0x0e)
f++;
if (f==4)
f=1;
/**********加一键*********/
if(judcekey==0x0d)
{clock[f-1]++;}
if (f==1)
{ if (clock[f-1]==24){
clock[f-1]=0;}
}
else{ if (clock[f-1]==60)
clock[f-1]=0;
}
/******减一键***********/
if(judcekey==0x0b)
{clock[f-1]--;}
if (f==1)
{ if (clock[f-1]==0xff){
clock[f-1]=23;}
}
else
{ if (clock[f-1]==0xff)
clock[f-1]=59;
}
return2:_nop_();
}
//本程序已经调试成功并能够正确执行
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit wela=P2^7;
sbit dula=P2^6;
sbit s1=P3^4;//模式的选择
sbit s2=P3^5;//调高
sbit s3=P3^6;//调低
sbit s4=P3^7;//选择是否开启闹铃
sbit beep=P2^3;
uchar tt,num,t1,settime,bi;
uchar flag; //至位
int fen,miao,fen1=0,miao1=10;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar dis[]={0x40,0x40,0x40,0x40,0x40,0x40};
void timedisplay();
void display();
void keydisplay();
void setdisplay();
void display1();
void delay(uchar z)
{
uchar i,j;
for(i=125;i>0;i--)
for(j=z;j>0;j--);
}
void warm()
{
if(bi==1)
{
beep=0;
TR1=1;
}
}
void init()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
TH1=(65536-50000)/256;
TL1=(65536-50000)%6;
EA=1;
ET0=1;
ET1=1;
TR0=1;
}
void keyscan()
{
if(s4==0)
{
delay(5);
{
if (s4==0)
{
while(!s4);
bi++;
if(bi==2)
{
bi=0;
}
}
}
}
if(s1==0)
{
delay(5);
if(s1==0)
{
while(!s1);
num++;
if(num==3)
{
num=0;
}
}
}
if(num!=0)
{
if(s2==0)
{
delay(5);
if(s2==0)
{
if(num==1)
{
miao1++;
if(miao1==60)
miao1=0;
}
if(num==2)
{
fen1++;
if(fen1==60)
fen1=0;
}
while(!s2)
{
keydisplay();
}
}
}
if(s3==0)
{
delay(5);
if(s3==0)
{
if(num==1)
{
miao1--;
if(miao1==-1)
miao1=59;
}
if(num==2)
{
fen1--;
if(fen1==-1)
fen1=59;
}
while(!s3)
{
keydisplay();
}
}
}
}
}
void setdisplay() //设置模式下的显示
{
dis[0]=0x40;
dis[1]=0x40;
dis[2]=table[0];
dis[3]=table[num];
dis[4]=0x40;
dis[5]=0x40;
display();
}
void keydisplay() //通过按键加减时的显示
{
if((flag==1)&&(num==2))
{
dis[0]=table[fen1/10]&0x00;
dis[1]=table[fen1]&0x00;
}
else
{
dis[0]=table[fen1/10];
dis[1]=table[fen1];
}
dis[2]=0x40;
if((flag==1)&&(num==1))
{
dis[3]=table[miao1/10]&0x00;
dis[4]=table[miao1]&0x00;
}
else
{
dis[3]=table[miao1/10];
dis[4]=table[miao1];
}
dis[5]=0x40;
display();
}
void display() //基本的动态显示
{
dula=1; //the one
P0=dis[0];
dula=0;
wela=1;
P0=0xfe;
wela=0;
delay(1);
dula=1; //the two
P0=dis[1];
dula=0;
wela=1;
P0=0xfd;
wela=0;
delay(1);
dula=1; //the three
P0=dis[2];
dula=0;
wela=1;
P0=0xfb;
wela=0;
delay(1);
dula=1; //the four
P0=dis[3];
dula=0;
wela=1;
P0=0xf7;
wela=0;
delay(1);
dula=1; //the five
P0=dis[4];
dula=0;
wela=1;
P0=0xef;
wela=0;
delay(1);
dula=1; //the six
P0=dis[5];
dula=0;
wela=1;
P0=0xdf;
wela=0;
delay(1);
}
void timedisplay()
{
dis[0]=table[fen/10];
dis[1]=table[fen];
dis[2]=0x40;
dis[3]=table[miao/10];
dis[4]=table[miao];
dis[5]=0x40;
display();
}
void main()
{
init();
while(1)
{
keyscan();
if(num!=0)
{
keydisplay();
}
if(num==0)
{
timedisplay();
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
tt++;
if(tt==20)
{
tt=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
}
}
}
if(!num&&fen1==fen&&miao1==miao)
{
warm();
}
settime++;
if(settime==10)
{
flag=1;
}
if(settime==20)
{
settime=0;
flag=0;
}
}
void timer1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%6;
t1++;
if(t1==60)
{
t1=0;
beep=1;
}
}
关于“用汇编语言做单片机时钟显示”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!