-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch.xml
More file actions
196 lines (183 loc) · 51.8 KB
/
search.xml
File metadata and controls
196 lines (183 loc) · 51.8 KB
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>1001 害死人不偿命的(3n+1)猜想</title>
<url>/2019/02/27/1001-%E5%AE%B3%E6%AD%BB%E4%BA%BA%E4%B8%8D%E5%81%BF%E5%91%BD%E7%9A%84-3n-1-%E7%8C%9C%E6%83%B3/</url>
<content><![CDATA[<p>卡拉兹(Callatz)猜想:</p>
<p>对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……</p>
<p>我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?</p>
<a id="more"></a>
<h3 id="输入格式:"><a href="#输入格式:" class="headerlink" title="输入格式:"></a>输入格式:</h3><p>每个测试输入包含 1 个测试用例,即给出正整数 n 的值。</p>
<h3 id="输出格式:"><a href="#输出格式:" class="headerlink" title="输出格式:"></a>输出格式:</h3><p>输出从 n 计算到 1 需要的步数。</p>
<h3 id="输入样例:"><a href="#输入样例:" class="headerlink" title="输入样例:"></a>输入样例:</h3><p>3</p>
<h3 id="输出样例:"><a href="#输出样例:" class="headerlink" title="输出样例:"></a>输出样例:</h3><p>5</p>
<h3 id="思路:"><a href="#思路:" class="headerlink" title="思路:"></a>思路:</h3><p>没什么特别的,直接暴力循环求解。</p>
<h3 id="程序:"><a href="#程序:" class="headerlink" title="程序:"></a>程序:</h3><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><stdio.h></span></span></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> n,cnt=<span class="number">0</span>;</span><br><span class="line"> <span class="built_in">scanf</span>(<span class="string">"%d"</span>,&n);</span><br><span class="line"> <span class="keyword">while</span>(n!=<span class="number">1</span>){</span><br><span class="line"> <span class="keyword">if</span>(n%<span class="number">2</span>==<span class="number">1</span>){</span><br><span class="line"> n=n*<span class="number">3</span>+<span class="number">1</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">else</span>{</span><br><span class="line"> n=n/<span class="number">2</span>;</span><br><span class="line"> cnt++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d\n"</span>,cnt);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category>解题报告</category>
</categories>
<tags>
<tag>PTA</tag>
<tag>Basic Level</tag>
</tags>
</entry>
<entry>
<title>200. 岛屿的个数</title>
<url>/2019/04/02/200-%E5%B2%9B%E5%B1%BF%E7%9A%84%E4%B8%AA%E6%95%B0/</url>
<content><![CDATA[<h1 id="200-岛屿的个数"><a href="#200-岛屿的个数" class="headerlink" title="200. 岛屿的个数"></a>200. 岛屿的个数</h1><p>给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。</p>
<a id="more"></a>
<h2 id="示例-1"><a href="#示例-1" class="headerlink" title="示例 1:"></a>示例 1:</h2><blockquote>
<p>输入:<br>11110<br>11010<br>11000<br>00000<br>输出: 1</p>
</blockquote>
<h2 id="示例-2"><a href="#示例-2" class="headerlink" title="示例 2:"></a>示例 2:</h2><blockquote>
<p>输入:<br>11000<br>11000<br>00100<br>00011 </p>
<p>输出: 3</p>
</blockquote>
<hr>
<h2 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h2><p>连通块问题。就是给定一个图,求连通分量的数目。输入的数据可以用二维的数组或二维向量储存。每次从“1”的块(即“陆地”)出发,遍历与其相连的“陆地”,并将遍历过的“陆地”的值置为“0”,表示其与“海洋”一样,无须遍历,以避免多次访问同一个“块”。遍历的算法可以使用DFS遍历或BFS遍历。</p>
<hr>
<h2 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h2><h4 id="DFS遍历"><a href="#DFS遍历" class="headerlink" title="DFS遍历"></a><strong>DFS遍历</strong></h4><figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="comment">//执行时间20ms,内存消耗10.5MB</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><iostream></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><vector></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><cstdio></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> {</span></span><br><span class="line"><span class="keyword">public</span>:</span><br><span class="line"> <span class="function"><span class="keyword">int</span> <span class="title">numIslands</span><span class="params">(<span class="built_in">vector</span><<span class="built_in">vector</span><<span class="keyword">char</span>>>& grid)</span> </span>{</span><br><span class="line"> <span class="keyword">int</span> cnt=<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>; i<grid.<span class="built_in">size</span>(); i++){</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> j=<span class="number">0</span>; j<grid[i].<span class="built_in">size</span>(); j++){</span><br><span class="line"> <span class="keyword">if</span>(grid[i][j] != <span class="string">'0'</span>){</span><br><span class="line"> cnt++;</span><br><span class="line"> dfs(grid, i, j);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> cnt;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">void</span> <span class="title">dfs</span><span class="params">(<span class="built_in">vector</span><<span class="built_in">vector</span><<span class="keyword">char</span>>>& grid,<span class="keyword">int</span> x,<span class="keyword">int</span> y)</span></span>{</span><br><span class="line"> <span class="keyword">if</span>( x<<span class="number">0</span> || x>=grid.<span class="built_in">size</span>() || y<<span class="number">0</span> || y>=grid[x].<span class="built_in">size</span>() ) <span class="keyword">return</span>;</span><br><span class="line"> <span class="keyword">if</span>( grid[x][y] ==<span class="string">'0'</span> ) <span class="keyword">return</span>;</span><br><span class="line"> grid[x][y] = <span class="string">'0'</span>;</span><br><span class="line"> dfs(grid, x<span class="number">-1</span>, y) ;</span><br><span class="line"> dfs(grid, x+<span class="number">1</span>, y) ;</span><br><span class="line"> dfs(grid, x, y<span class="number">-1</span>) ;</span><br><span class="line"> dfs(grid, x, y+<span class="number">1</span>) ;</span><br><span class="line"> }</span><br><span class="line">};</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"></span><br><span class="line"> freopen(<span class="string">"input"</span>, <span class="string">"r"</span>, <span class="built_in">stdin</span>);</span><br><span class="line"> freopen(<span class="string">"output"</span>, <span class="string">"w"</span>, <span class="built_in">stdout</span>);</span><br><span class="line"></span><br><span class="line"> <span class="keyword">char</span> str;</span><br><span class="line"> <span class="built_in">vector</span>< <span class="built_in">vector</span>< <span class="keyword">char</span> > > a;</span><br><span class="line"> <span class="built_in">vector</span>< <span class="keyword">char</span> > t;</span><br><span class="line"> <span class="keyword">while</span>( <span class="built_in">cin</span>.<span class="built_in">get</span>(str) ){</span><br><span class="line"> <span class="keyword">if</span>(str!=<span class="string">'\n'</span>)</span><br><span class="line"> t.push_back(str);</span><br><span class="line"> <span class="keyword">else</span>{</span><br><span class="line"> a.push_back(t);</span><br><span class="line"> t.<span class="built_in">clear</span>();</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> Solution s;</span><br><span class="line"> <span class="built_in">cout</span> << s.numIslands(a) << <span class="built_in">endl</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="BFS遍历"><a href="#BFS遍历" class="headerlink" title="BFS遍历"></a><strong>BFS遍历</strong></h4><figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="comment">// 在Leetcode上只通过了38个测试用例,错误为超时</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><iostream></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><vector></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><queue></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><cmath></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><string></span></span></span><br><span class="line"></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span> {</span></span><br><span class="line"><span class="keyword">private</span>:</span><br><span class="line"> <span class="keyword">int</span> count=<span class="number">0</span>;</span><br><span class="line"> pair<<span class="keyword">int</span>,<span class="keyword">int</span>> subnode;</span><br><span class="line"> pair<<span class="keyword">int</span>, <span class="keyword">int</span>> node;</span><br><span class="line"> <span class="keyword">int</span> m[<span class="number">4</span>][<span class="number">2</span>]={<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">-1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">-1</span>};</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span>:</span><br><span class="line"> <span class="function"><span class="keyword">int</span> <span class="title">numIslands</span><span class="params">(<span class="built_in">vector</span><<span class="built_in">vector</span><<span class="keyword">char</span>>>& grid)</span> </span>{</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>; i<grid.<span class="built_in">size</span>(); i++){</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> j=<span class="number">0</span>; j<grid[i].<span class="built_in">size</span>(); j++){</span><br><span class="line"> <span class="keyword">if</span>( grid[i][j] == <span class="string">'0'</span> ) <span class="keyword">continue</span>;</span><br><span class="line"> <span class="keyword">else</span> {</span><br><span class="line"> node.first = i;</span><br><span class="line"> node.second = j;</span><br><span class="line"> bfs(grid, node);</span><br><span class="line"> count++;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> count;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"><span class="keyword">private</span>:</span><br><span class="line"> <span class="function"><span class="keyword">void</span> <span class="title">bfs</span><span class="params">(<span class="built_in">vector</span><<span class="built_in">vector</span><<span class="keyword">char</span>>>& grid, pair<<span class="keyword">int</span>,<span class="keyword">int</span>>& node )</span></span>{</span><br><span class="line"> <span class="built_in">queue</span>< pair<<span class="keyword">int</span> ,<span class="keyword">int</span>> > q;</span><br><span class="line"> pair<<span class="keyword">int</span>, <span class="keyword">int</span>> qhead;</span><br><span class="line"> q.push( node );</span><br><span class="line"> <span class="keyword">while</span>( !q.empty() ){</span><br><span class="line"> qhead = q.front();</span><br><span class="line"> grid[ qhead.first ][ qhead.second ]=<span class="string">'0'</span>;</span><br><span class="line"> q.pop();</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>; i<<span class="number">4</span>; i++){</span><br><span class="line"> <span class="keyword">int</span> x = qhead.first + m[i][<span class="number">0</span>];</span><br><span class="line"> <span class="keyword">int</span> y = qhead.second + m[i][<span class="number">1</span>];</span><br><span class="line"> <span class="keyword">if</span>( x<<span class="number">0</span> || x>=grid.<span class="built_in">size</span>() || y<<span class="number">0</span> || y>=grid[x].<span class="built_in">size</span>() ) <span class="keyword">continue</span>;</span><br><span class="line"> <span class="keyword">if</span>( grid[x][y] == <span class="string">'1'</span>){</span><br><span class="line"> subnode.first = x;</span><br><span class="line"> subnode.second = y;</span><br><span class="line"> q.push( subnode );</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">};</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"></span><br><span class="line"> freopen(<span class="string">"input2"</span>, <span class="string">"r"</span>, <span class="built_in">stdin</span>);</span><br><span class="line"> freopen(<span class="string">"output"</span>, <span class="string">"w"</span>, <span class="built_in">stdout</span>);</span><br><span class="line"></span><br><span class="line"> <span class="keyword">char</span> str;</span><br><span class="line"> <span class="built_in">vector</span>< <span class="built_in">vector</span>< <span class="keyword">char</span> > > a;</span><br><span class="line"> <span class="built_in">vector</span>< <span class="keyword">char</span> > t;</span><br><span class="line"> <span class="keyword">while</span>( <span class="built_in">cin</span>.<span class="built_in">get</span>(str) ){</span><br><span class="line"> <span class="keyword">if</span>(str!=<span class="string">'\n'</span>)</span><br><span class="line"> t.push_back(str);</span><br><span class="line"> <span class="keyword">else</span>{</span><br><span class="line"> a.push_back(t);</span><br><span class="line"> t.<span class="built_in">clear</span>();</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> Solution s;</span><br><span class="line"> <span class="built_in">cout</span> << s.numIslands(a) << <span class="built_in">endl</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="BFS遍历(修改)"><a href="#BFS遍历(修改)" class="headerlink" title="BFS遍历(修改)"></a><strong>BFS遍历(修改)</strong></h4><figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="comment">//与上面相比,仅仅是修改了grid[x][y]='0'的位置</span></span><br><span class="line"><span class="comment">//执行用时36ms,内存消耗11MB</span></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">bfs</span><span class="params">(<span class="built_in">vector</span><<span class="built_in">vector</span><<span class="keyword">char</span>>>& grid,pair<<span class="keyword">int</span>,<span class="keyword">int</span>>& node )</span></span>{</span><br><span class="line"> <span class="built_in">queue</span>< pair<<span class="keyword">int</span> ,<span class="keyword">int</span>> > q;</span><br><span class="line"> pair<<span class="keyword">int</span>, <span class="keyword">int</span>> qhead;</span><br><span class="line"> q.push( node );</span><br><span class="line"> <span class="keyword">while</span>( !q.empty() ){</span><br><span class="line"> qhead = q.front();</span><br><span class="line"> q.pop();</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">int</span> i=<span class="number">0</span>; i<<span class="number">4</span>; i++){</span><br><span class="line"> <span class="keyword">int</span> x = qhead.first + m[i][<span class="number">0</span>];</span><br><span class="line"> <span class="keyword">int</span> y = qhead.second + m[i][<span class="number">1</span>];</span><br><span class="line"> <span class="keyword">if</span>( x<<span class="number">0</span> || x>=grid.<span class="built_in">size</span>() || y<<span class="number">0</span> || y>=grid[x].<span class="built_in">size</span>() ) <span class="keyword">continue</span>;</span><br><span class="line"> <span class="keyword">if</span>( grid[x][y] == <span class="string">'1'</span>){</span><br><span class="line"> subnode.first = x;</span><br><span class="line"> subnode.second = y;</span><br><span class="line"> q.push( subnode );</span><br><span class="line"> grid[ x ][ y ]=<span class="string">'0'</span>;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category>Leetcode解题报告</category>
</categories>
<tags>
<tag>Leetcode</tag>
<tag>图</tag>
<tag>DFS</tag>
<tag>BFS</tag>
</tags>
</entry>
<entry>
<title>单片机单个数码管显示实验</title>
<url>/2019/03/06/%E5%8D%95%E7%89%87%E6%9C%BA%E5%8D%95%E4%B8%AA%E6%95%B0%E7%A0%81%E7%AE%A1%E6%98%BE%E7%A4%BA%E5%AE%9E%E9%AA%8C/</url>
<content><![CDATA[<h2 id="实验内容"><a href="#实验内容" class="headerlink" title="实验内容"></a>实验内容</h2><p>单个数码管显示,数码管上轮流显示0-9,间隔0.5s</p>
<a id="more"></a>
<h2 id="实验环境"><a href="#实验环境" class="headerlink" title="实验环境"></a>实验环境</h2><blockquote>
<p>uVision 5<br>Protues 8 Professional</p>
</blockquote>
<h2 id="实验元器件"><a href="#实验元器件" class="headerlink" title="实验元器件"></a>实验元器件</h2><blockquote>
<p>单片机(AT89C51)<br>共阳极数码管灯(7SEG-COM-AN-BULE)<br>电阻(res)</p>
</blockquote>
<h2 id="实验原理图"><a href="#实验原理图" class="headerlink" title="实验原理图"></a>实验原理图</h2><p><img src="%E5%AE%9E%E9%AA%8C%E5%8E%9F%E7%90%86%E5%9B%BE.png"></p>
<h2 id="程序"><a href="#程序" class="headerlink" title="程序"></a>程序</h2><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><reg51.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> uchar unsigned char</span></span><br><span class="line"></span><br><span class="line">uchar code seg[]={<span class="number">0xc0</span>,<span class="number">0xf9</span>,<span class="number">0xa4</span>,<span class="number">0xb0</span>,<span class="number">0x99</span>,<span class="number">0x92</span>,<span class="number">0x82</span>,<span class="number">0xf8</span>,<span class="number">0x80</span>,<span class="number">0x90</span>};</span><br><span class="line"></span><br><span class="line"><span class="comment">//延时函数</span></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">delay</span><span class="params">(<span class="keyword">int</span> t)</span></span>;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"> uchar i=<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">while</span>(<span class="number">1</span>){</span><br><span class="line"> i=i%<span class="number">10</span>;</span><br><span class="line"> P1=seg[i];</span><br><span class="line"> <span class="built_in">delay</span>(<span class="number">500</span>);</span><br><span class="line"> i++;</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">delay</span><span class="params">(<span class="keyword">int</span> t)</span></span>{</span><br><span class="line"> uchar i;</span><br><span class="line"> <span class="keyword">while</span>(t--){</span><br><span class="line"> <span class="keyword">for</span>(i=<span class="number">0</span>;i<<span class="number">120</span>;i++);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>单片机</category>
</categories>
<tags>
<tag>单片机实验</tag>
</tags>
</entry>
<entry>
<title>单片机外部中断实验</title>
<url>/2019/03/06/%E5%8D%95%E7%89%87%E6%9C%BA%E5%A4%96%E9%83%A8%E4%B8%AD%E6%96%AD%E5%AE%9E%E9%AA%8C/</url>
<content><![CDATA[<h2 id="实验内容"><a href="#实验内容" class="headerlink" title="实验内容"></a>实验内容</h2><p>单片机接8个led,初始状态下led全部熄灭,每按一次按键,led改变状态(即按一下全灭,再按一下全亮),要求用外部中断实现。</p>
<a id="more"></a>
<h2 id="实验环境"><a href="#实验环境" class="headerlink" title="实验环境"></a>实验环境</h2><blockquote>
<p>uVision 5<br>Protues 8 Professional</p>
</blockquote>
<h2 id="实验元器件"><a href="#实验元器件" class="headerlink" title="实验元器件"></a>实验元器件</h2><blockquote>
<p>单片机(AT89C51)<br>按键(button)<br>LED灯(LED-YELLOW)<br>电阻(res)</p>
</blockquote>
<h2 id="实验原理图"><a href="#实验原理图" class="headerlink" title="实验原理图"></a>实验原理图</h2><p><img src="%E5%AE%9E%E9%AA%8C%E5%8E%9F%E7%90%86%E5%9B%BE.png"></p>
<h2 id="程序"><a href="#程序" class="headerlink" title="程序"></a>程序</h2><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><reg51.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><intrins.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> uchar unsigned char</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> uint unsigned int</span></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"> <span class="comment">//初始状态八个led全灭</span></span><br><span class="line"> P1=<span class="number">0xff</span>;</span><br><span class="line"> EA=<span class="number">1</span>;</span><br><span class="line"> EX0=<span class="number">1</span>;</span><br><span class="line"> IT0=<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">while</span>(<span class="number">1</span>);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">//中断函数</span></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">int0</span><span class="params">()</span> interrupt 0 <span class="keyword">using</span> 1</span>{</span><br><span class="line"> EX0=<span class="number">0</span>;</span><br><span class="line"> P1=~P1;</span><br><span class="line"> EX0=<span class="number">1</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category>单片机</category>
</categories>
<tags>
<tag>单片机实验</tag>
</tags>
</entry>
<entry>
<title>《编程珠玑(第2版)》 第一章</title>
<url>/2019/08/09/%E3%80%8A%E7%BC%96%E7%A8%8B%E7%8F%A0%E7%8E%91-%E7%AC%AC2%E7%89%88-%E3%80%8B-%E7%AC%AC%E4%B8%80%E7%AB%A0/</url>
<content><![CDATA[<h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>近日正在阅读《编程珠玑(第2版)》,希望自己能有所收获。《编程珠玑》的内容丰富,每章的后面都有一定量的习题。这篇文章不是为了记录习题的答案而写,仅仅会包含我在学习中觉得对自己有帮助和我觉得有趣的内容。</p>
<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p><strong>输入</strong><br>一个最多包含n个正整数的文件,每个数都小于n,其中$n = 10^7$。如果在输入文件中有任何整数重复出现就是致命错误。没有其他数据与该整数相关联。</p>
<a id="more"></a>
<p><strong>输出</strong><br>按升序排列的输入整数的列表</p>
<p><strong>约束</strong><br>最多有(大约)1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,运行时间为10秒就不需要进一步优化了。</p>
<h2 id="简单分析"><a href="#简单分析" class="headerlink" title="简单分析"></a>简单分析</h2><p>  这个问题的难点是内存空间的限制,其次是时间的限制。《编程珠玑》中给的思路是将数据集合用位图或者位向量表示。</p>
<p>  使用位图表示1000万个数,需要125万字节。如果问题的约束严格限制在1MB以内,可以采用两趟算法。即第一趟排序0<del>49999999的数字,第二趟排序5000000</del>9999999中间的数据。使用C语言来实现的话,关键点只需将存储数据的数组的大小设置成5000000就行。k趟算法同理,时间开销变成了kn,空间开销变成n/k。</p>
<p>  下面给出的程序,没有严格考虑内存在1MB以内。只是用位图实现了排序。</p>
<h2 id="测试数据"><a href="#测试数据" class="headerlink" title="测试数据"></a>测试数据</h2><p>我是用python代码自动生成测试数据的文件</p>
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 文件名:dataGenerator.py</span></span><br><span class="line"><span class="comment"># 示例: dataGenerator.py 10000 1</span></span><br><span class="line"><span class="comment"># 示例表示生成由10000个数据构成的文件,并且每个数据最多出现1次</span></span><br><span class="line"><span class="keyword">import</span> random</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line">args = sys.argv</span><br><span class="line">k = args[<span class="number">1</span>]</span><br><span class="line">max_of_per_num = eval(args[<span class="number">2</span>])</span><br><span class="line">N = <span class="number">10000000</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span>(k.isdigit() <span class="keyword">and</span> eval(k)<N*max_of_per_num <span class="keyword">and</span> eval(k)><span class="number">0</span> <span class="keyword">and</span> max_of_per_num < <span class="number">16</span> <span class="keyword">and</span> max_of_per_num > <span class="number">0</span>):</span><br><span class="line"> file = open(<span class="string">"data"</span>,<span class="string">"w"</span>)</span><br><span class="line"> x=list(range(N))</span><br><span class="line"> x=x*max_of_per_num</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> range(<span class="number">0</span>,eval(k)):</span><br><span class="line"> temp = random.randint(i,N*max_of_per_num<span class="number">-1</span>)</span><br><span class="line"> x[i],x[temp]=x[temp],x[i]</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> range(<span class="number">0</span>,eval(k)):</span><br><span class="line"> file.write(str(x[i])+<span class="string">"\n"</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line"> print(<span class="string">"参数输入错误,请输入测试用例的数字个数(小于 “1000万*每个数的次数” 的正整数)和每个数最多出现的次数(不超过15,含15)。例如 dataGenerator.py 1000 1!"</span>)</span><br></pre></td></tr></table></figure>
<h2 id="C语言实现"><a href="#C语言实现" class="headerlink" title="C语言实现"></a>C语言实现</h2><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><stdio.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><stdlib.h></span></span></span><br><span class="line"></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> BITSPERWORD 32</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> SHIFT 5</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> MASK 0x1F</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> N 10000000</span></span><br><span class="line"><span class="keyword">int</span> a[<span class="number">1</span>+N/BITSPERWORD];</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">set</span><span class="params">(<span class="keyword">int</span> i)</span></span>{ a[i >> SHIFT] |= (<span class="number">1</span><<(i & MASK)); }</span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">clr</span><span class="params">(<span class="keyword">int</span> i)</span></span>{ a[i >> SHIFT] &= ~(<span class="number">1</span><<(i & MASK)); }</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">test</span><span class="params">(<span class="keyword">int</span> i)</span></span>{ <span class="keyword">return</span> a[i >> SHIFT] & (<span class="number">1</span><<(i & MASK)); }</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"> <span class="comment">// freopen("data","r",stdin);</span></span><br><span class="line"> <span class="comment">// freopen ("output", "w", stdout);</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">int</span> i;</span><br><span class="line"> <span class="keyword">for</span>(i=<span class="number">0</span>;i<N;i++){</span><br><span class="line"> clr(i);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">while</span>(<span class="built_in">scanf</span>(<span class="string">"%d"</span>,&i)!=EOF){</span><br><span class="line"> <span class="built_in">set</span>(i);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span>(i=<span class="number">0</span>;i<N;i++){</span><br><span class="line"> <span class="keyword">if</span>(test(i))</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d\n"</span>,i);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line"> }</span><br></pre></td></tr></table></figure>
<h2 id="拓展"><a href="#拓展" class="headerlink" title="拓展"></a>拓展</h2><p>  第一章习题的第6题,将原问题中每个整数最多出现一次,改成每个整数最多出现10,其他条件不变的情况下应该怎么处理。<br>  对于上述问题,只需要改变一下位向量的实现。使用每4位表示一个整数。下面给出的程序,忽略了内存大小的约束,用位图实现了每个整数最多出现10次时的排序算法。其中在用C语言实现算法时遇到了一个有趣的BUG。</p>
<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><stdio.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><stdlib.h></span></span></span><br><span class="line"></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> BITSPERWORD 32</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> SHIFT 3</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> MASK 0x07</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> N 10000000</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> BITSPERNUM 4</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> SHOWMAX 10</span></span><br><span class="line"><span class="keyword">unsigned</span> <span class="keyword">int</span> a[<span class="number">1</span>+N/(BITSPERWORD/BITSPERNUM)];</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">set</span><span class="params">(<span class="keyword">int</span> i)</span></span>{ a[i >> SHIFT] += (<span class="number">1</span><<((i & MASK)*BITSPERNUM)); }</span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">clr</span><span class="params">(<span class="keyword">int</span> i)</span></span>{ a[i >> SHIFT] &= ~(<span class="number">0x0f</span><<((i & MASK)*BITSPERNUM)); }</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">test</span><span class="params">(<span class="keyword">int</span> i)</span></span>{ <span class="keyword">return</span> ( a[i >> SHIFT] & (<span class="number">0x0f</span><<((i & MASK)*BITSPERNUM)) ) >> ((i & MASK)*BITSPERNUM); }</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"> freopen(<span class="string">"data"</span>,<span class="string">"r"</span>,<span class="built_in">stdin</span>);</span><br><span class="line"> freopen (<span class="string">"output"</span>, <span class="string">"w"</span>, <span class="built_in">stdout</span>);</span><br><span class="line"></span><br><span class="line"> <span class="keyword">int</span> i,j,c;</span><br><span class="line"> <span class="keyword">for</span>(i=<span class="number">0</span>;i<N;i++){</span><br><span class="line"> clr(i);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">while</span>(<span class="built_in">scanf</span>(<span class="string">"%d"</span>,&i)!=EOF){</span><br><span class="line"> <span class="built_in">set</span>(i);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span>(i=<span class="number">0</span>;i<N;i++){</span><br><span class="line"> c = test(i);</span><br><span class="line"> <span class="keyword">for</span> (j=<span class="number">0</span>;j<c;j++)</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d\n"</span>,i);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line"> }</span><br></pre></td></tr></table></figure>
<blockquote>
<p>注:上述程序在实现过程中遇到一个BUG,那就是在一开始用int定义数组a。这导致在使用数据测试时,输出的整数个数少于输入的整数个数,即出现有测试数据“丢失”的情况,而且这个BUG只是有时出现,并且数据量越大,出现的概率越大。经过分析,发现问题主要出在void set(int i)这个函数,这个函数中使用了加法操作,这导致这种情况,1000 0000 0000 0001原本表示a,b,c,d分别出现了8,0,0,1次,而这是读入的数据又是d时,调用set函数,1000 0000 0000 0001 + 0000 0000 0000 0001 ,返回的值却是0。因为最高位是符号位,用十进制来看,set函数实际上返回的是(-1+1)的值</p>
</blockquote>
]]></content>
<categories>
<category>编程珠玑</category>
</categories>
<tags>
<tag>编程珠玑</tag>
<tag>排序</tag>
</tags>
</entry>
<entry>
<title>单片机定时器实验</title>
<url>/2019/03/06/%E5%8D%95%E7%89%87%E6%9C%BA%E5%AE%9A%E6%97%B6%E5%99%A8%E5%AE%9E%E9%AA%8C/</url>
<content><![CDATA[<h2 id="实验内容"><a href="#实验内容" class="headerlink" title="实验内容"></a>实验内容</h2><p>8个LED闪烁,点亮时间0.2s,熄灭时间0.2s。要求用定时器中断实现。</p>
<a id="more"></a>
<h2 id="实验环境"><a href="#实验环境" class="headerlink" title="实验环境"></a>实验环境</h2><blockquote>
<p>uVision 5<br>Protues 8 Professional</p>
</blockquote>
<h2 id="实验元器件"><a href="#实验元器件" class="headerlink" title="实验元器件"></a>实验元器件</h2><blockquote>
<p>单片机(AT89C51)<br>LED灯(LED-YELLOW)<br>电阻(res)</p>
</blockquote>
<h2 id="实验原理图"><a href="#实验原理图" class="headerlink" title="实验原理图"></a>实验原理图</h2><p><img src="%E5%AE%9E%E9%AA%8C%E5%8E%9F%E7%90%86%E5%9B%BE.png"></p>
<h2 id="程序"><a href="#程序" class="headerlink" title="程序"></a>程序</h2><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><reg51.h></span></span></span><br><span class="line"></span><br><span class="line"><span class="comment">//表示延时200毫秒,即0.2秒</span></span><br><span class="line"><span class="keyword">int</span> i=<span class="number">200</span>;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"> TMOD=<span class="number">0x01</span>;</span><br><span class="line"> TH0=<span class="number">0xfc</span>;</span><br><span class="line"> TL0=<span class="number">0x18</span>;</span><br><span class="line"> EA=<span class="number">1</span>;</span><br><span class="line"> ET0=<span class="number">1</span>;</span><br><span class="line"> TR0=<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">while</span>(<span class="number">1</span>);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">timer0</span><span class="params">()</span> interrupt 1</span>{</span><br><span class="line"> TH0=<span class="number">0xfc</span>;</span><br><span class="line"> TL0=<span class="number">0x18</span>;</span><br><span class="line"> i--;</span><br><span class="line"> <span class="keyword">if</span>(i<=<span class="number">0</span>){</span><br><span class="line"> P1=~P1;</span><br><span class="line"> i=<span class="number">200</span>;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category>单片机</category>
</categories>
<tags>
<tag>单片机实验</tag>
</tags>
</entry>
<entry>
<title>单片机独立式键盘实验</title>
<url>/2019/03/06/%E5%8D%95%E7%89%87%E6%9C%BA%E7%8B%AC%E7%AB%8B%E5%BC%8F%E9%94%AE%E7%9B%98%E5%AE%9E%E9%AA%8C/</url>
<content><![CDATA[<h2 id="实验内容"><a href="#实验内容" class="headerlink" title="实验内容"></a>实验内容</h2><p>独立式键盘,4个按键,编号0-3,按下一个按键,LED显示其键号(非中断)。</p>
<a id="more"></a>
<h2 id="实验环境"><a href="#实验环境" class="headerlink" title="实验环境"></a>实验环境</h2><blockquote>
<p>uVision 5<br>Protues 8 Professional</p>
</blockquote>
<h2 id="实验元器件"><a href="#实验元器件" class="headerlink" title="实验元器件"></a>实验元器件</h2><blockquote>
<p>单片机(AT89C51)<br>按键(button)<br>共阳极数码管灯(7SEG-COM-AN-BULE)<br>电阻(res)</p>
</blockquote>
<h2 id="实验原理图"><a href="#实验原理图" class="headerlink" title="实验原理图"></a>实验原理图</h2><p><img src="%E5%AE%9E%E9%AA%8C%E5%8E%9F%E7%90%86%E5%9B%BE.png"></p>
<h2 id="程序"><a href="#程序" class="headerlink" title="程序"></a>程序</h2><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><reg51.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> uchar unsigned char</span></span><br><span class="line"></span><br><span class="line">uchar code seg[]={<span class="number">0xc0</span>,<span class="number">0xf9</span>,<span class="number">0xa4</span>,<span class="number">0xb0</span>};</span><br><span class="line">sbit S0=P1^<span class="number">0</span>;</span><br><span class="line">sbit S1=P1^<span class="number">1</span>;</span><br><span class="line">sbit S2=P1^<span class="number">2</span>;</span><br><span class="line">sbit S3=P1^<span class="number">3</span>;</span><br><span class="line">uchar key;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">key_scan</span><span class="params">()</span></span>;</span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">delay10ms</span><span class="params">()</span></span>;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"> key=<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">while</span>(<span class="number">1</span>){</span><br><span class="line"> key_scan();</span><br><span class="line"> P2=seg[key];</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">key_scan</span><span class="params">()</span></span>{</span><br><span class="line"> P1=<span class="number">0xff</span>;</span><br><span class="line"> <span class="keyword">if</span>((P1&<span class="number">0x0f</span>)!=<span class="number">0x0f</span>){</span><br><span class="line"> delay10ms();</span><br><span class="line"> <span class="keyword">if</span>(S0==<span class="number">0</span>) key=<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">if</span>(S1==<span class="number">0</span>) key=<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">if</span>(S2==<span class="number">0</span>) key=<span class="number">2</span>;</span><br><span class="line"> <span class="keyword">if</span>(S3==<span class="number">0</span>) key=<span class="number">3</span>;</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">//防抖消除</span></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">delay10ms</span><span class="params">()</span></span>{</span><br><span class="line"> uchar i,j;</span><br><span class="line"> <span class="keyword">for</span>(i=<span class="number">0</span>;i<<span class="number">100</span>;i++){</span><br><span class="line"> <span class="keyword">for</span>(j=<span class="number">0</span>;j<<span class="number">100</span>;j++);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>单片机</category>
</categories>
<tags>
<tag>单片机实验</tag>
</tags>
</entry>
<entry>
<title>单片机流水灯实验</title>
<url>/2019/03/06/%E5%8D%95%E7%89%87%E6%9C%BA%E6%B5%81%E6%B0%B4%E7%81%AF%E5%AE%9E%E9%AA%8C/</url>
<content><![CDATA[<h2 id="实验内容"><a href="#实验内容" class="headerlink" title="实验内容"></a>实验内容</h2><p>做一个单向流水灯,8个led灯由上向下轮流点亮,间隔0.5秒.(不使用数组)。</p>
<a id="more"></a>
<h2 id="实验环境"><a href="#实验环境" class="headerlink" title="实验环境"></a>实验环境</h2><blockquote>
<p>uVision 5<br>Protues 8 Professional</p>
</blockquote>
<h2 id="实验元器件"><a href="#实验元器件" class="headerlink" title="实验元器件"></a>实验元器件</h2><blockquote>
<p>单片机(AT89C51);<br>LED灯(LED-YELLOW);<br>电阻(res)</p>
</blockquote>
<h2 id="实验电路图"><a href="#实验电路图" class="headerlink" title="实验电路图"></a>实验电路图</h2><p><img src="%E5%AE%9E%E9%AA%8C%E5%8E%9F%E7%90%86%E5%9B%BE.png"></p>
<h2 id="程序"><a href="#程序" class="headerlink" title="程序"></a>程序</h2><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><reg51.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><intrins.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> uchar unsigned char</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> uint unsigned int</span></span><br><span class="line"></span><br><span class="line"><span class="comment">//延时函数,延时 t ms</span></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">delay</span><span class="params">(uint t)</span></span>{</span><br><span class="line"> uchar i;</span><br><span class="line"> <span class="keyword">while</span>(t--){</span><br><span class="line"> <span class="keyword">for</span>(i=<span class="number">0</span>;i<<span class="number">120</span>;++i);</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"> P1=<span class="number">0xfe</span>;</span><br><span class="line"> <span class="keyword">while</span>(<span class="number">1</span>){</span><br><span class="line"> <span class="comment">//延时0.5秒</span></span><br><span class="line"> <span class="built_in">delay</span>(<span class="number">500</span>);</span><br><span class="line"> P1=_crol_(P1,<span class="number">1</span>);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>单片机</category>
</categories>
<tags>
<tag>单片机实验</tag>
</tags>
</entry>
</search>