C# WinForms控件初始化与生命周期解析
2026/10/15 9:04:37
每按一次按键,LEDNum 加 1,然后把这个数取反后输出到 P2 口,点亮对应的 LED。
因为 LED 是低电平点亮,所以取反后,值为 0 的位对应的 LED 会亮。
#include<mcs51/8051.h>voidDelayXms(unsignedintxms){unsignedchari,j;if(xms==0)return;do{i=2;j=239;do{while(--j);}while(--i);}while(--xms);}voidmain(void){// LEDNum 是一个 8 位变量,初始值为 0,用来记录当前要显示的数值。unsignedcharLEDNum=0;while(1){if(P3_1==0)// 按键按下{DelayXms(20);// 消抖while(P3_1==0);// 等待松手DelayXms(20);// 消抖LEDNum++;P2=~LEDNum;}}}LED 是低电平点亮。
| 按键次数 | LEDNum | 二进制 | P2 输出(取反后) | 亮的 LED |
|---|---|---|---|---|
| 0 | 0 | 0000 0000 | 1111 1111 | 全灭 |
| 1 | 1 | 0000 0001 | 1111 1110 | P2.0 |
| 2 | 2 | 0000 0010 | 1111 1101 | P2.1 |
| 3 | 3 | 0000 0011 | 1111 1100 | P2.0、P2.1 |
| 4 | 4 | 0000 0100 | 1111 1011 | P2.2 |
| 5 | 5 | 0000 0101 | 1111 1010 | P2.0、P2.2 |
相当于用 LED 显示 0~255 的二进制数。