Simplest way to deal with this is to have a static array of the desired values as a look-up table. Use an integer (byte or whatever natural register size) counting from 0 to 6 to index the table. Very fast on modern (or twenty year old) CPUs. Seven values of 8-bit values are easily written by hand.
Bit gymnastics working on the current value to obtain the next with shift operators will run slower, and can't work anyway. You don't have a function for relating one value to the next. For behold:
0b10000001
0b01000010 <-- this value
0b00100100 <-- next value
0b00011000
0b00100100
0b01000010 <-- same value again
0b10000001 <-- different next value!
The same bit pattern appears twice. But the following values are different.
I'm assuming that in real life, you want to do exactly as stated in the question. A lookup table of seven byte values is best.
But if the reality is you (or some future Googler finding this question) are working on, perhaps, 4096-bit long strings of bits, and want to generate a series of bit patterns like shown the question, then even if you want to use a lookup table, some poor sap is going to be stuck writing it. Don't let that be you!
So another more general solution, appying to any size though I'll describe it in terms of the same old 8-bit bytes, in no particular language:
A = 0b10000000
B = 0b00000001
while A nonzero:
result = A | B
shift right A, shift left B
Simple and elegant, but you get the value where the two bits meet in the middle twice, 0b00011000. If that's to be avoided, then add code to check for that case and skip ahead to the next iteration.