8051 Memory TypeS

TypeS

data:可直接寻址的RAM,速度最快,大小128 bytes。

idata:间接(Indirectly)寻址RAM,大小256 bytes,前128 bytes与data相同,访问方式不同。

阅读全文

软件正版化

正版化的意义不仅仅在于软件使用者对问题的重新审视,更在于对社会风气潜移默化的影响。我的观点很鲜明,力所能及范围内使用正版,支持非实物优质内容付费。

我把电脑上需要需要授权的软件大概整理了一下,如图:某些值得一提的软件

阅读全文

关于换行

The following characters are interpreted as line breaks in Visual Studio:

CR LF: Carriage return + line feed, Unicode characters 000D + 000A

阅读全文

CSS基础框盒模型与HTML元素类型

CSS框盒模型

在使用CSS进行layout的时候,经常需要对BOX Model中的元素进行调整,Box模型定义四个概念:Margin,Border,Padding与Content。
BoxModel.png

阅读全文

Apple招聘文案

直接从果子官网抄的文案)

各位敢于不断从零开始的人

爱唱反调

讨厌合拍的人

各位不懂得随大流,不看规则的眼色

阅读全文

”智能“小车预览版

!!!注意这只是一个半半半成品,开学之后会迁移主控到新平台并完善功能与添加模块。

嗯,很久之前挖的一个坑,因为疫情没有材料,于是顺手拆了一个玩具车。
半成品如下:小车

阅读全文

Anaconda卸载后CMD Powershell启动报错

Abstract

在卸载Anaconda包之后,powershell与cmd启动时便会有报错信息出现,提示The system cannot find the path specified.,在检查注册表与Powershell配置文件后得以解决。

阅读全文

纵向选择文本

开始之前

屏幕上的二维文本,划定横纵轴,即可根据行列定位字符。常见的文本处理软件不仅可以横向编辑,也可以竖向选择编辑。

Word

Alt+左键拖动纵向选择文本,点击空白区域即可取消选择。
Word

阅读全文

5—数码管的动态显示

数码管相关电路

数码管(其中com 1~8对应段选,a~dp对应位选。)

阅读全文

4—独立按键与矩阵键盘

CT107D板子上的键盘可以通过跳线J5选择矩阵键盘与独立键盘。按键部分

独立键盘

简单地检测P30,P31,P32,P33口的电平变化,再通过去抖动处理过滤干扰就可以较为精准地得到键盘按下的状态。(注意在操作端口前先进行位定义sbit,定义端口对应的变量。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include<reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
uchar code dig_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f,0xff};
sbit S7 = P3^0;
sbit S6 = P3^1;
sbit S5 = P3^2;
sbit S4 = P3^3;
uchar times=0;
uchar mode=0;
void delay(uint t)
{
while(t--);
while(t--);
}

void select(uchar channel)
{
switch(channel)
{
case 4:
P2=(P2&0X1f)|0X80;//不改变P2其他IO口电平的情况下改变138译码器输入
break;
case 5:
P2=(P2&0X1f)|0Xa0;
break;
case 6:
P2=(P2&0X1f)|0Xc0;
break;
case 7:
P2=(P2&0X1f)|0Xe0;
break;
}

}

void display(uchar dig)
{
select(6);
P0=0X01;
select(7);
P0=dig_code[dig];
}

void scankey_signal()
{
if(S7==0)//检测到S7按下
{
delay(100);
if(S7==0)//延迟一段时间再次检测S7
{
while(S7==0);//等待S7松开,否则一直执行该循环
display(7);//实现S7按下后松开显示数字的功能
}
}

if(S6==0)
{
delay(100);
if(S6==0)
{
display(6);
while(S6==0);
display(18);//实现S6按下时显示数字,松开后熄灭的功能
}
}

if(S5==0)
{
delay(100);
if(S5==0)
{
display(5);
while(S5==0);
times+=1;
if(times==10)
{
times=0;
}
display(times);//实现按键按下时显示当前键位,松开时显示按下次数
}
}

if(S4==0)
{
delay(100);
if(S4==0)
{
while(S4==0);
display(4);
mode=~mode;//每次按键按下时,模式反转
}
}
}


int main()
{
while(1)
{
scankey_signal();
}
}

阅读全文